Self-Driving Car Engineer Nanodegree

Project: Vehicle Detection and Tracking

In [1]:
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import numpy as np
import cv2
import glob
import time
from sklearn.svm import LinearSVC
from sklearn.preprocessing import StandardScaler
from skimage.feature import hog
from sklearn.model_selection import train_test_split
from skimage.feature import hog
%matplotlib inline

Features extraction

In [2]:
# Define a function to return HOG features and visualization
def get_hog_features(img, orient, pix_per_cell, cell_per_block, 
                        vis=False, feature_vec=True):
    # Call with two outputs if vis==True
    if vis == True:
        features, hog_image = hog(img, orientations=orient, pixels_per_cell=(pix_per_cell, pix_per_cell),
                                  cells_per_block=(cell_per_block, cell_per_block), transform_sqrt=True, 
                                  visualise=vis, feature_vector=feature_vec)
        return features, hog_image
    # Otherwise call with one output
    else:      
        features = hog(img, orientations=orient, pixels_per_cell=(pix_per_cell, pix_per_cell),
                       cells_per_block=(cell_per_block, cell_per_block), transform_sqrt=True, 
                       visualise=vis, feature_vector=feature_vec)
        return features
In [3]:
def bin_spatial(img, size=(32, 32)):
    color1 = cv2.resize(img[:,:,0], size).ravel()
    color2 = cv2.resize(img[:,:,1], size).ravel()
    color3 = cv2.resize(img[:,:,2], size).ravel()
    return np.hstack((color1, color2, color3))

# Define a function to compute color histogram features  
def color_hist(img, nbins=32, bins_range=(0, 256)):
    # Compute the histogram of the color channels separately
    channel1_hist = np.histogram(img[:,:,0], bins=nbins, range=bins_range)
    channel2_hist = np.histogram(img[:,:,1], bins=nbins, range=bins_range)
    channel3_hist = np.histogram(img[:,:,2], bins=nbins, range=bins_range)
    # Concatenate the histograms into a single feature vector
    hist_features = np.concatenate((channel1_hist[0], channel2_hist[0], channel3_hist[0]))
    # Return the individual histograms, bin_centers and feature vector
    return hist_features
In [4]:
# Define a function to extract features from a list of images
def img_features(feature_image, spatial_feat, hist_feat, hog_feat, hist_bins, orient, 
                        pix_per_cell, cell_per_block, hog_channel):
    file_features = []
    if spatial_feat == True:
        spatial_features = bin_spatial(feature_image, size=spatial_size)
        #print 'spat', spatial_features.shape
        file_features.append(spatial_features)
    if hist_feat == True:
         # Apply color_hist()
        hist_features = color_hist(feature_image, nbins=hist_bins)
        #print 'hist', hist_features.shape
        file_features.append(hist_features)
    if hog_feat == True:
    # Call get_hog_features() with vis=False, feature_vec=True
        if hog_channel == 'ALL':
            hog_features = []
            for channel in range(feature_image.shape[2]):
                hog_features.extend(get_hog_features(feature_image[:,:,channel], 
                                    orient, pix_per_cell, cell_per_block, 
                                    vis=False, feature_vec=True))            
        else:
            feature_image = cv2.cvtColor(feature_image, cv2.COLOR_LUV2RGB)
            feature_image = cv2.cvtColor(feature_image, cv2.COLOR_RGB2GRAY)
            hog_features = get_hog_features(feature_image[:,:], orient, 
                            pix_per_cell, cell_per_block, vis=False, feature_vec=True)
                #print 'hog', hog_features.shape
            # Append the new feature vector to the features list
        file_features.append(hog_features)
    return file_features

# Define a function to extract features from a list of images
# Have this function call bin_spatial() and color_hist()
def extract_features(imgs, color_space='RGB', spatial_size=(32, 32),
                        hist_bins=32, orient=9, 
                        pix_per_cell=8, cell_per_block=2, hog_channel=0,
                        spatial_feat=True, hist_feat=True, hog_feat=True):
    # Create a list to append feature vectors to
    features = []
    # Iterate through the list of images
    for file_p in imgs:
        file_features = []
        image = cv2.imread(file_p) # Read in each imageone by one
        # apply color conversion if other than 'RGB'
        if color_space != 'RGB':
            if color_space == 'HSV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
            elif color_space == 'LUV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2LUV)
            elif color_space == 'HLS':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2HLS)
            elif color_space == 'YUV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2YUV)
            elif color_space == 'YCrCb':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2YCrCb)
        else: feature_image = np.copy(image)      
        file_features = img_features(feature_image, spatial_feat, hist_feat, hog_feat, hist_bins, orient, 
                        pix_per_cell, cell_per_block, hog_channel)
        features.append(np.concatenate(file_features))
        feature_image=cv2.flip(feature_image,1) # Augment the dataset with flipped images
        file_features = img_features(feature_image, spatial_feat, hist_feat, hog_feat, hist_bins, orient, 
                        pix_per_cell, cell_per_block, hog_channel)
        features.append(np.concatenate(file_features))
    return features # Return list of feature vectors

Data loading

In [5]:
images = glob.glob('*data/*/*/*')
cars = []
notcars = []
for image in images:
    if 'non' in image:
        notcars.append(image)
    else:
        cars.append(image)

print(len(notcars))
print(len(cars))
8968
8792

It's pretty balanced, so isn't necessary make a data augmentation strategy

Features example

To validate all process, i'll make a simple plot, showing the hog features

In [6]:
def show_hog_features(img):
    img_cspaced = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)

    orient = 9
    pix_per_cell=8
    cell_per_block=2
    
    _, hog_y = get_hog_features(img_cspaced[:,:,0],
                                 orient, 
                                 pix_per_cell, 
                                 cell_per_block, 
                                 vis=True, 
                                 feature_vec=True)
    
    _, hog_Cr = get_hog_features(img_cspaced[:,:,1],
                                 orient, 
                                 pix_per_cell, 
                                 cell_per_block, 
                                 vis=True, 
                                 feature_vec=True)
    
    _, hog_Cb = get_hog_features(img_cspaced[:,:,2],
                                 orient, 
                                 pix_per_cell, 
                                 cell_per_block, 
                                 vis=True, 
                                 feature_vec=True)

    fig, ax = plt.subplots(ncols=4, figsize=(20,20))
    
    ax[0].imshow(img)
    ax[1].imshow(hog_y, cmap='gray')
    ax[1].set_title('hog_y')
    
    ax[2].imshow(hog_Cr, cmap='gray')
    ax[2].set_title('hog_Cr')
    
    ax[3].imshow(hog_Cb, cmap='gray')
    ax[3].set_title('hog_Cb')

    
show_hog_features(mpimg.imread(cars[0]))
show_hog_features(mpimg.imread(notcars[0]))
/usr/local/lib/python3.5/dist-packages/skimage/feature/_hog.py:119: skimage_deprecation: Default value of `block_norm`==`L1` is deprecated and will be changed to `L2-Hys` in v0.15
  'be changed to `L2-Hys` in v0.15', skimage_deprecation)

Classifier

Now the "magic". I train a SVC with features extracted (throw extra_features function) of all dataset (cars and not cars). Thanks to LUV color space and all hog features, I can reach a 99% of accuracy.

I use the train_test_split function to make a 80% (train) - 20% (test) split.

In [7]:
# Define parameters for feature extraction
color_space = 'LUV' # Can be RGB, HSV, LUV, HLS, YUV, YCrCb
orient = 9  
pix_per_cell = 8 
cell_per_block = 2 
hog_channel = "ALL" # Can be 0, 1, 2, or "ALL"

spatial_size = (32, 32) # Spatial binning dimensions
hist_bins = 32    # Number of histogram bins
spatial_feat = True # Spatial features on or off
hist_feat = True # Histogram features on or off
hog_feat = True # HOG features on or off

car_features = extract_features(cars, color_space=color_space, 
                        spatial_size=spatial_size, hist_bins=hist_bins, 
                        orient=orient, pix_per_cell=pix_per_cell, 
                        cell_per_block=cell_per_block, 
                        hog_channel=hog_channel, spatial_feat=spatial_feat, 
                        hist_feat=hist_feat, hog_feat=hog_feat)

notcar_features = extract_features(notcars, color_space=color_space, 
                        spatial_size=spatial_size, hist_bins=hist_bins, 
                        orient=orient, pix_per_cell=pix_per_cell, 
                        cell_per_block=cell_per_block, 
                        hog_channel=hog_channel, spatial_feat=spatial_feat, 
                        hist_feat=hist_feat, hog_feat=hog_feat)


X = np.vstack((car_features, notcar_features)).astype(np.float64)                        

X_scaler = StandardScaler().fit(X) # Fit a per-column scaler
scaled_X = X_scaler.transform(X) # Apply the scaler to X

y = np.hstack((np.ones(len(car_features)), np.zeros(len(notcar_features)))) # Define the labels vector

# Split up data into randomized training and test sets
X_train, X_test, y_train, y_test = train_test_split(scaled_X, y, test_size=0.2, random_state=99)

print('Using:',orient,'orientations',pix_per_cell,
    'pixels per cell and', cell_per_block,'cells per block')
print('Feature vector length:', len(X_train[0]))
# Use a linear SVC 
svc = LinearSVC()
# Check the training time for the SVC
svc.fit(X_train, y_train)
# Check the score of the SVC
print('Test Accuracy of SVC = ', round(svc.score(X_test, y_test), 4))
/usr/local/lib/python3.5/dist-packages/skimage/feature/_hog.py:119: skimage_deprecation: Default value of `block_norm`==`L1` is deprecated and will be changed to `L2-Hys` in v0.15
  'be changed to `L2-Hys` in v0.15', skimage_deprecation)
Using: 9 orientations 8 pixels per cell and 2 cells per block
Feature vector length: 8460
Test Accuracy of SVC =  0.9928

Slide window

In slide_windows generate a list of boxes to draw the this list in a image.

In [8]:
# Define a function that takes an image,
# start and stop positions in both x and y, 
# window size (x and y dimensions),  
# and overlap fraction (for both x and y)
def slide_window(img, x_start_stop=[None, None], y_start_stop=[None, None], 
                    xy_window=(64, 64), xy_overlap=(0.5, 0.5)):
    # If x and/or y start/stop positions not defined, set to image size
    if x_start_stop[0] == None:
        x_start_stop[0] = 0
    if x_start_stop[1] == None:
        x_start_stop[1] = img.shape[1]
    if y_start_stop[0] == None:
        y_start_stop[0] = 0
    if y_start_stop[1] == None:
        y_start_stop[1] = img.shape[0]
    # Compute the span of the region to be searched    
    xspan = x_start_stop[1] - x_start_stop[0]
    yspan = y_start_stop[1] - y_start_stop[0]
    # Compute the number of pixels per step in x/y
    nx_pix_per_step = np.int(xy_window[0]*(1 - xy_overlap[0]))
    ny_pix_per_step = np.int(xy_window[1]*(1 - xy_overlap[1]))
    # Compute the number of windows in x/y
    nx_buffer = np.int(xy_window[0]*(xy_overlap[0]))
    ny_buffer = np.int(xy_window[1]*(xy_overlap[1]))
    nx_windows = np.int((xspan-nx_buffer)/nx_pix_per_step) 
    ny_windows = np.int((yspan-ny_buffer)/ny_pix_per_step) 
    # Initialize a list to append window positions to
    window_list = []
    # Loop through finding x and y window positions
    # Note: you could vectorize this step, but in practice
    # you'll be considering windows one by one with your
    # classifier, so looping makes sense
    for ys in range(ny_windows):
        for xs in range(nx_windows):
            # Calculate window position
            startx = xs*nx_pix_per_step + x_start_stop[0]
            endx = startx + xy_window[0]
            starty = ys*ny_pix_per_step + y_start_stop[0]
            endy = starty + xy_window[1]
            # Append window position to list
            window_list.append(((startx, starty), (endx, endy)))
    # Return the list of windows
    return window_list
In [9]:
# Define a function to draw bounding boxes
def draw_boxes(img, bboxes, color=(0, 0, 255), thick=6):
    # Make a copy of the image
    imcopy = np.copy(img)
    # Iterate through the bounding boxes
    for bbox in bboxes:
        # Draw a rectangle given bbox coordinates
        cv2.rectangle(imcopy, bbox[0], bbox[1], color, thick)
    # Return the image copy with boxes drawn
    return imcopy
In [10]:
# Define a function to extract features from a single image window
# This function is very similar to extract_features()
# just for a single image rather than list of images
def single_img_features(img, color_space='RGB', spatial_size=(32, 32),
                        hist_bins=32, orient=9, 
                        pix_per_cell=8, cell_per_block=2, hog_channel=0,
                        spatial_feat=True, hist_feat=True, hog_feat=True):    
    #1) Define an empty list to receive features
    img_features = []
    #2) Apply color conversion if other than 'RGB'
    if color_space != 'RGB':
        if color_space == 'HSV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
        elif color_space == 'LUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2LUV)
        elif color_space == 'HLS':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HLS)
        elif color_space == 'YUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YUV)
        elif color_space == 'YCrCb':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
    else: feature_image = np.copy(img)      
    #3) Compute spatial features if flag is set
    if spatial_feat == True:
        spatial_features = bin_spatial(feature_image, size=spatial_size)
        #4) Append features to list
        img_features.append(spatial_features)
    #5) Compute histogram features if flag is set
    if hist_feat == True:
        hist_features = color_hist(feature_image, nbins=hist_bins)
        #6) Append features to list
        img_features.append(hist_features)
    #7) Compute HOG features if flag is set
    if hog_feat == True:
        if hog_channel == 'ALL':
            hog_features = []
            for channel in range(feature_image.shape[2]):
                hog_features.extend(get_hog_features(feature_image[:,:,channel], 
                                    orient, pix_per_cell, cell_per_block, 
                                    vis=False, feature_vec=True))      
        else:
            hog_features = get_hog_features(feature_image[:,:,hog_channel], orient, 
                        pix_per_cell, cell_per_block, vis=False, feature_vec=True)
        #8) Append features to list
        img_features.append(hog_features)

    #9) Return concatenated array of features
    return np.concatenate(img_features)

search_windows iterate all over the image making windows to predict if there is a car or not.

In [11]:
# Define a function you will pass an image 
# and the list of windows to be searched (output of slide_windows())
def search_windows(img, windows, clf, scaler, color_space='RGB', 
                    spatial_size=(32, 32), hist_bins=32, 
                    hist_range=(0, 256), orient=9, 
                    pix_per_cell=8, cell_per_block=2, 
                    hog_channel=0, spatial_feat=True, 
                    hist_feat=True, hog_feat=True):

    #1) Create an empty list to receive positive detection windows
    on_windows = []
    #2) Iterate over all windows in the list
    for window in windows:
        #3) Extract the test window from original image
        test_img = cv2.resize(img[window[0][1]:window[1][1], window[0][0]:window[1][0]], (64, 64))      
        #4) Extract features for that window using single_img_features()
        features = single_img_features(test_img, color_space=color_space, 
                            spatial_size=spatial_size, hist_bins=hist_bins, 
                            orient=orient, pix_per_cell=pix_per_cell, 
                            cell_per_block=cell_per_block, 
                            hog_channel=hog_channel, spatial_feat=spatial_feat, 
                            hist_feat=hist_feat, hog_feat=hog_feat)
        #5) Scale extracted features to be fed to classifier
        test_features = scaler.transform(np.array(features).reshape(1, -1))
        #6) Predict using your classifier
        prediction = clf.predict(test_features)
        #7) If positive (prediction == 1) then save the window
#         print(prediction, test_features)
        if prediction == 1:
            on_windows.append(window)
    #8) Return windows for positive detections
    return on_windows

Classifier result

Because now I can "windowized" the image, I going gatter all functions to find cars in each image.

  1. Get Image
  2. Slide windows throw image
  3. Predict in each windows if there is a car or not
  4. Draw the predict (red square where SVC predict a car)
In [12]:
def show_img(img):
    if len(img.shape)==3: #Color BGR image
        plt.figure()
        plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    else: # Grayscale image
        plt.figure()
        plt.imshow(img, cmap='gray')
In [150]:
t=time.time() # Start time
for image_p in glob.glob('test_images/test*.jpg'):
    image = cv2.imread(image_p)
    draw_image = np.copy(image)
    windows = slide_window(image, x_start_stop=[None, None], y_start_stop=[400, 640], 
                    xy_window=(128, 128), xy_overlap=(0.85, 0.85))
    hot_windows = []
    hot_windows += (search_windows(image, windows, svc, X_scaler, color_space=color_space, 
                        spatial_size=spatial_size, hist_bins=hist_bins, 
                        orient=orient, pix_per_cell=pix_per_cell, 
                        cell_per_block=cell_per_block, 
                        hog_channel=hog_channel, spatial_feat=spatial_feat, 
                        hist_feat=hist_feat, hog_feat=hog_feat))                       
    window_img = draw_boxes(draw_image, hot_windows, color=(0, 0, 255), thick=6)                    
    show_img(window_img)
    
print(round(time.time()-t, 2), 'Seconds to process test images')
7.99 Seconds to process test images

Optimization in slide window

In [61]:
def convert_color(img, conv='RGB2YCrCb'):
    if conv == 'RGB2YCrCb':
        return cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
    if conv == 'BGR2YCrCb':
        return cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
    if conv == 'RGB2LUV':
        return cv2.cvtColor(img, cv2.COLOR_RGB2LUV)

def find_cars(img, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins):
    
    
    draw_img = np.copy(img)
    img = np.copy(img)
    img = cv2.cvtColor(img, cv2.COLOR_RGB2LUV)

#     img = img.astype(np.float32)/255
    
    ctrans_tosearch = img[ystart:ystop,:,:]
    
    if scale != 1:
        imshape = ctrans_tosearch.shape
        ctrans_tosearch = cv2.resize(ctrans_tosearch, (np.int(imshape[1]/scale), np.int(imshape[0]/scale)))
        
    ch1 = ctrans_tosearch[:,:,0]
    ch2 = ctrans_tosearch[:,:,1]
    ch3 = ctrans_tosearch[:,:,2]

    # Define blocks and steps as above
    nxblocks = (ch1.shape[1] // pix_per_cell) - cell_per_block + 1
    nyblocks = (ch1.shape[0] // pix_per_cell) - cell_per_block + 1 
    nfeat_per_block = orient*cell_per_block**2
    
    # 64 was the orginal sampling rate, with 8 cells and 8 pix per cell
    window = 64
    nblocks_per_window = (window // pix_per_cell) - cell_per_block + 1
    cells_per_step = 2  # Instead of overlap, define how many cells to step
    nxsteps = (nxblocks - nblocks_per_window) // cells_per_step + 1
    nysteps = (nyblocks - nblocks_per_window) // cells_per_step + 1
    
    # Compute individual channel HOG features for the entire image
    hog1 = get_hog_features(ch1, orient, pix_per_cell, cell_per_block, feature_vec=False)
    hog2 = get_hog_features(ch2, orient, pix_per_cell, cell_per_block, feature_vec=False)
    hog3 = get_hog_features(ch3, orient, pix_per_cell, cell_per_block, feature_vec=False)
    
    boxes = []
    for xb in range(nxsteps):
        for yb in range(nysteps):
            ypos = yb*cells_per_step
            xpos = xb*cells_per_step
            # Extract HOG for this patch
            hog_feat1 = hog1[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_feat2 = hog2[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_feat3 = hog3[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_features = np.hstack((hog_feat1, hog_feat2, hog_feat3))

            xleft = xpos*pix_per_cell
            ytop = ypos*pix_per_cell

            # Extract the image patch
            subimg = cv2.resize(ctrans_tosearch[ytop:ytop+window, xleft:xleft+window], (64,64))
          
            # Get color features
            spatial_features = bin_spatial(subimg, size=spatial_size)
            hist_features = color_hist(subimg, nbins=hist_bins)

            # Scale features and make a prediction
            X = np.hstack((spatial_features, hist_features, hog_features)).reshape(1, -1)
            test_features = X_scaler.transform(X)    
            #test_features = X_scaler.transform(np.hstack((shape_feat, hist_feat)).reshape(1, -1))    
            test_prediction = svc.predict(test_features)
            
            
            if test_prediction == 1:
                xbox_left = np.int(xleft*scale)
                ytop_draw = np.int(ytop*scale)
                win_draw = np.int(window*scale)
                tmp_window = ((xbox_left, ytop_draw+ystart),(xbox_left+win_draw,ytop_draw+win_draw+ystart))
                cv2.rectangle(draw_img, tmp_window[0], tmp_window[1], (0,0,255),6) 
                boxes.append(tmp_window)
                        
    return draw_img, boxes
    

Example:

In [166]:
ystart = 400
ystop = 656
scale = 1.5

for image_p in glob.glob('test_images/test*.jpg'):
    image = cv2.imread(image_p)
    out_img, _ = find_cars(image, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    show_img(out_img)

False Positives and Multiple detections filter

The search_windows produces a lot of redundant true positives, so the point is not make this redundant positives and also remove the false positives. To reach this, I use a heat map strategy, adding +1 for all pixels within where a positive detection

In [203]:
from scipy.ndimage.measurements import label

def add_heat(heatmap, bbox_list):
    # Iterate through list of bboxes
    for box in bbox_list:
        # Add += 1 for all pixels inside each bbox
        # Assuming each "box" takes the form ((x1, y1), (x2, y2))
        heatmap[box[0][1]:box[1][1], box[0][0]:box[1][0]] += 1

    # Return updated heatmap
    return heatmap# Iterate through list of bboxes
    
def apply_threshold(heatmap, threshold):
    # Zero out pixels below the threshold
    heatmap[heatmap <= threshold] = 0
    # Return thresholded map
    return heatmap

def draw_labeled_bboxes(img, labels):
    # Iterate through all detected cars
    for car_number in range(1, labels[1]+1):
        # Find pixels with each car_number label value
        nonzero = (labels[0] == car_number).nonzero()
        # Identify x and y values of those pixels
        nonzeroy = np.array(nonzero[0])
        nonzerox = np.array(nonzero[1])
        # Define a bounding box based on min/max x and y
        bbox = ((np.min(nonzerox), np.min(nonzeroy)), (np.max(nonzerox), np.max(nonzeroy)))
        # Draw the box on the image
        cv2.rectangle(img, bbox[0], bbox[1], (0,0,255), 6)
    # Return the image
    return img

def filter_boxes(image, box_list):

    heat = np.zeros_like(image[:,:,0]).astype(np.float)

    # Add heat to each box in box list
    heat = add_heat(heat,box_list)

    # Apply threshold to help remove false positives
    heat = apply_threshold(heat,0.99)

    # Visualize the heatmap when displaying    
    heatmap = np.clip(heat, 0, 255)

    # Find final boxes from heatmap using label function
    labels = label(heatmap)
    draw_img = draw_labeled_bboxes(np.copy(image), labels)
    
    return draw_img, heatmap

Example:

In [204]:
for image_p in glob.glob('test_images/test*.jpg'):
    image = cv2.imread(image_p)
    out_img, boxes = find_cars(image, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    draw_img, heatmap = filter_boxes(image, boxes)

    fig = plt.figure(figsize=(20,20))
    plt.subplot(121)
    plt.imshow(cv2.cvtColor(draw_img, cv2.COLOR_BGR2RGB))
    plt.title('Car Positions')

    plt.subplot(122)
    plt.imshow(heatmap, cmap='hot')
    plt.title('Heat Map')
    fig.tight_layout()

Process Pipelines

This functions acts like an API.

  • vehicle_detect get an image as input and return this image with boxes around the cars.
  • vehicle_detect_and_line_lines get an image as input and return this image with boxes around the cars and the result of the project 4 (Advanced Lane Lines detect)
In [205]:
def vehicle_detect(image):
    image = np.copy(cv2.cvtColor(image, cv2.COLOR_RGB2BGR))
    _ , boxes = find_cars(image, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    draw_img, _ = filter_boxes(image, boxes)
    
    return cv2.cvtColor(draw_img, cv2.COLOR_BGR2RGB)
In [206]:
import lane_finding

def vehicle_detect_and_line_lines(image):
    image = np.copy(cv2.cvtColor(image, cv2.COLOR_RGB2BGR))
    
    _ , boxes = find_cars(image, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    draw_img, _ = filter_boxes(lane_finding.process_image(image), boxes)
     
    return cv2.cvtColor(draw_img, cv2.COLOR_BGR2RGB)

Example:

In [209]:
image = cv2.imread('test_images/test1.jpg')

orig_img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
vehicle_detect_img = vehicle_detect(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
lane_finding_img = lane_finding.process_image(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
both_img = vehicle_detect_and_line_lines(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

fig = plt.figure(figsize=(20,20))
plt.subplot(141)
plt.imshow(orig_img)
plt.title('Original')

plt.subplot(142)
plt.imshow(vehicle_detect_img)
plt.title('Car Position')
fig.tight_layout()

plt.subplot(143)
plt.imshow(lane_finding_img)
plt.title('Lane lines')
fig.tight_layout()

plt.subplot(144)
plt.imshow(both_img)
plt.title('Lane lines and Car Position')
fig.tight_layout()

Video processing

Now, time to process all frames of a video with whole project, as well as the lane lines detection

In [211]:
from moviepy.editor import VideoFileClip

output_v = 'project_video_proc.mp4'
clip1 = VideoFileClip("project_video.mp4")
clip = clip1.fl_image(vehicle_detect_and_line_lines)
%time clip.write_videofile(output_v, audio=False)
[MoviePy] >>>> Building video project_video_proc.mp4
[MoviePy] Writing video project_video_proc.mp4
  0%|          | 0/1261 [00:00<?, ?it/s]
  0%|          | 1/1261 [00:00<18:27,  1.14it/s]
  0%|          | 2/1261 [00:01<19:18,  1.09it/s]
  0%|          | 3/1261 [00:02<19:01,  1.10it/s]
  0%|          | 4/1261 [00:03<18:43,  1.12it/s]
  0%|          | 5/1261 [00:04<18:32,  1.13it/s]
  0%|          | 6/1261 [00:05<18:32,  1.13it/s]
  1%|          | 7/1261 [00:06<18:23,  1.14it/s]
  1%|          | 8/1261 [00:07<18:17,  1.14it/s]
  1%|          | 9/1261 [00:07<18:16,  1.14it/s]
  1%|          | 10/1261 [00:08<18:11,  1.15it/s]
  1%|          | 11/1261 [00:09<18:09,  1.15it/s]
  1%|          | 12/1261 [00:10<18:05,  1.15it/s]
  1%|          | 13/1261 [00:11<18:08,  1.15it/s]
  1%|          | 14/1261 [00:12<18:05,  1.15it/s]
  1%|          | 15/1261 [00:13<18:39,  1.11it/s]
  1%|▏         | 16/1261 [00:14<18:28,  1.12it/s]
  1%|▏         | 17/1261 [00:15<18:17,  1.13it/s]
  1%|▏         | 18/1261 [00:15<18:11,  1.14it/s]
  2%|▏         | 19/1261 [00:16<18:05,  1.14it/s]
  2%|▏         | 20/1261 [00:17<18:00,  1.15it/s]
  2%|▏         | 21/1261 [00:18<17:57,  1.15it/s]
  2%|▏         | 22/1261 [00:19<17:57,  1.15it/s]
  2%|▏         | 23/1261 [00:20<17:55,  1.15it/s]
  2%|▏         | 24/1261 [00:21<17:51,  1.15it/s]
  2%|▏         | 25/1261 [00:21<17:49,  1.16it/s]
  2%|▏         | 26/1261 [00:22<17:48,  1.16it/s]
  2%|▏         | 27/1261 [00:23<17:45,  1.16it/s]
  2%|▏         | 28/1261 [00:24<17:43,  1.16it/s]
  2%|▏         | 29/1261 [00:25<17:42,  1.16it/s]
  2%|▏         | 30/1261 [00:26<17:41,  1.16it/s]
  2%|▏         | 31/1261 [00:27<17:39,  1.16it/s]
  3%|▎         | 32/1261 [00:27<17:40,  1.16it/s]
  3%|▎         | 33/1261 [00:28<17:42,  1.16it/s]
  3%|▎         | 34/1261 [00:29<17:42,  1.15it/s]
  3%|▎         | 35/1261 [00:30<17:40,  1.16it/s]
  3%|▎         | 36/1261 [00:31<17:56,  1.14it/s]
  3%|▎         | 37/1261 [00:32<17:47,  1.15it/s]
  3%|▎         | 38/1261 [00:33<17:42,  1.15it/s]
  3%|▎         | 39/1261 [00:34<17:39,  1.15it/s]
  3%|▎         | 40/1261 [00:34<17:42,  1.15it/s]
  3%|▎         | 41/1261 [00:35<17:41,  1.15it/s]
  3%|▎         | 42/1261 [00:36<17:37,  1.15it/s]
  3%|▎         | 43/1261 [00:37<17:35,  1.15it/s]
  3%|▎         | 44/1261 [00:38<17:47,  1.14it/s]
  4%|▎         | 45/1261 [00:39<17:42,  1.14it/s]
  4%|▎         | 46/1261 [00:40<17:38,  1.15it/s]
  4%|▎         | 47/1261 [00:41<17:35,  1.15it/s]
  4%|▍         | 48/1261 [00:41<17:35,  1.15it/s]
  4%|▍         | 49/1261 [00:42<17:32,  1.15it/s]
  4%|▍         | 50/1261 [00:43<17:37,  1.14it/s]
  4%|▍         | 51/1261 [00:44<17:34,  1.15it/s]
  4%|▍         | 52/1261 [00:45<17:30,  1.15it/s]
  4%|▍         | 53/1261 [00:46<17:25,  1.15it/s]
  4%|▍         | 54/1261 [00:47<17:24,  1.16it/s]
  4%|▍         | 55/1261 [00:47<17:22,  1.16it/s]
  4%|▍         | 56/1261 [00:48<17:26,  1.15it/s]
  5%|▍         | 57/1261 [00:49<17:27,  1.15it/s]
  5%|▍         | 58/1261 [00:50<17:22,  1.15it/s]
  5%|▍         | 59/1261 [00:51<17:38,  1.14it/s]
  5%|▍         | 60/1261 [00:52<17:32,  1.14it/s]
  5%|▍         | 61/1261 [00:53<17:35,  1.14it/s]
  5%|▍         | 62/1261 [00:54<17:27,  1.14it/s]
  5%|▍         | 63/1261 [00:54<17:22,  1.15it/s]
  5%|▌         | 64/1261 [00:55<17:19,  1.15it/s]
  5%|▌         | 65/1261 [00:56<17:18,  1.15it/s]
  5%|▌         | 66/1261 [00:57<17:14,  1.15it/s]
  5%|▌         | 67/1261 [00:58<17:17,  1.15it/s]
  5%|▌         | 68/1261 [00:59<17:17,  1.15it/s]
  5%|▌         | 69/1261 [01:00<17:15,  1.15it/s]
  6%|▌         | 70/1261 [01:01<17:12,  1.15it/s]
  6%|▌         | 71/1261 [01:01<17:16,  1.15it/s]
  6%|▌         | 72/1261 [01:02<17:23,  1.14it/s]
  6%|▌         | 73/1261 [01:03<17:18,  1.14it/s]
  6%|▌         | 74/1261 [01:04<17:13,  1.15it/s]
  6%|▌         | 75/1261 [01:05<17:12,  1.15it/s]
  6%|▌         | 76/1261 [01:06<17:09,  1.15it/s]
  6%|▌         | 77/1261 [01:07<17:18,  1.14it/s]
  6%|▌         | 78/1261 [01:08<17:20,  1.14it/s]
  6%|▋         | 79/1261 [01:09<17:48,  1.11it/s]
  6%|▋         | 80/1261 [01:09<17:33,  1.12it/s]
  6%|▋         | 81/1261 [01:10<17:34,  1.12it/s]
  7%|▋         | 82/1261 [01:11<17:26,  1.13it/s]
  7%|▋         | 83/1261 [01:12<17:20,  1.13it/s]
  7%|▋         | 84/1261 [01:13<17:20,  1.13it/s]
  7%|▋         | 85/1261 [01:14<17:11,  1.14it/s]
  7%|▋         | 86/1261 [01:15<17:06,  1.14it/s]
  7%|▋         | 87/1261 [01:16<17:01,  1.15it/s]
  7%|▋         | 88/1261 [01:16<16:58,  1.15it/s]
  7%|▋         | 89/1261 [01:17<16:55,  1.15it/s]
  7%|▋         | 90/1261 [01:18<17:01,  1.15it/s]
  7%|▋         | 91/1261 [01:19<17:01,  1.15it/s]
  7%|▋         | 92/1261 [01:20<16:56,  1.15it/s]
  7%|▋         | 93/1261 [01:21<16:54,  1.15it/s]
  7%|▋         | 94/1261 [01:22<16:52,  1.15it/s]
  8%|▊         | 95/1261 [01:22<16:50,  1.15it/s]
  8%|▊         | 96/1261 [01:23<16:49,  1.15it/s]
  8%|▊         | 97/1261 [01:24<16:49,  1.15it/s]
  8%|▊         | 98/1261 [01:25<16:49,  1.15it/s]
  8%|▊         | 99/1261 [01:26<16:48,  1.15it/s]
  8%|▊         | 100/1261 [01:27<16:46,  1.15it/s]
  8%|▊         | 101/1261 [01:28<16:44,  1.15it/s]
  8%|▊         | 102/1261 [01:29<16:44,  1.15it/s]
  8%|▊         | 103/1261 [01:29<16:48,  1.15it/s]
  8%|▊         | 104/1261 [01:30<16:44,  1.15it/s]
  8%|▊         | 105/1261 [01:31<16:44,  1.15it/s]
  8%|▊         | 106/1261 [01:32<16:41,  1.15it/s]
  8%|▊         | 107/1261 [01:33<16:38,  1.16it/s]
  9%|▊         | 108/1261 [01:34<16:35,  1.16it/s]
  9%|▊         | 109/1261 [01:35<16:35,  1.16it/s]
  9%|▊         | 110/1261 [01:35<16:34,  1.16it/s]
  9%|▉         | 111/1261 [01:36<16:40,  1.15it/s]
  9%|▉         | 112/1261 [01:37<16:42,  1.15it/s]
  9%|▉         | 113/1261 [01:38<16:38,  1.15it/s]
  9%|▉         | 114/1261 [01:39<16:38,  1.15it/s]
  9%|▉         | 115/1261 [01:40<16:35,  1.15it/s]
  9%|▉         | 116/1261 [01:41<16:35,  1.15it/s]
  9%|▉         | 117/1261 [01:42<16:35,  1.15it/s]
  9%|▉         | 118/1261 [01:42<16:31,  1.15it/s]
  9%|▉         | 119/1261 [01:43<16:59,  1.12it/s]
 10%|▉         | 120/1261 [01:44<16:50,  1.13it/s]
 10%|▉         | 121/1261 [01:45<16:41,  1.14it/s]
 10%|▉         | 122/1261 [01:46<16:35,  1.14it/s]
 10%|▉         | 123/1261 [01:47<16:30,  1.15it/s]
 10%|▉         | 124/1261 [01:48<16:28,  1.15it/s]
 10%|▉         | 125/1261 [01:49<16:30,  1.15it/s]
 10%|▉         | 126/1261 [01:49<16:27,  1.15it/s]
 10%|█         | 127/1261 [01:50<16:27,  1.15it/s]
 10%|█         | 128/1261 [01:51<16:31,  1.14it/s]
 10%|█         | 129/1261 [01:52<16:31,  1.14it/s]
 10%|█         | 130/1261 [01:53<16:28,  1.14it/s]
 10%|█         | 131/1261 [01:54<16:24,  1.15it/s]
 10%|█         | 132/1261 [01:55<16:43,  1.13it/s]
 11%|█         | 133/1261 [01:56<16:35,  1.13it/s]
 11%|█         | 134/1261 [01:56<16:29,  1.14it/s]
 11%|█         | 135/1261 [01:57<16:31,  1.14it/s]
 11%|█         | 136/1261 [01:58<16:23,  1.14it/s]
 11%|█         | 137/1261 [01:59<16:18,  1.15it/s]
 11%|█         | 138/1261 [02:00<16:14,  1.15it/s]
 11%|█         | 139/1261 [02:01<16:12,  1.15it/s]
 11%|█         | 140/1261 [02:02<16:09,  1.16it/s]
 11%|█         | 141/1261 [02:03<16:08,  1.16it/s]
 11%|█▏        | 142/1261 [02:03<16:08,  1.16it/s]
 11%|█▏        | 143/1261 [02:04<16:08,  1.15it/s]
 11%|█▏        | 144/1261 [02:05<16:06,  1.16it/s]
 11%|█▏        | 145/1261 [02:06<16:06,  1.15it/s]
 12%|█▏        | 146/1261 [02:07<16:04,  1.16it/s]
 12%|█▏        | 147/1261 [02:08<16:09,  1.15it/s]
 12%|█▏        | 148/1261 [02:09<16:07,  1.15it/s]
 12%|█▏        | 149/1261 [02:10<16:07,  1.15it/s]
 12%|█▏        | 150/1261 [02:10<16:08,  1.15it/s]
 12%|█▏        | 151/1261 [02:11<16:14,  1.14it/s]
 12%|█▏        | 152/1261 [02:12<16:09,  1.14it/s]
 12%|█▏        | 153/1261 [02:13<16:06,  1.15it/s]
 12%|█▏        | 154/1261 [02:14<16:06,  1.15it/s]
 12%|█▏        | 155/1261 [02:15<16:04,  1.15it/s]
 12%|█▏        | 156/1261 [02:16<16:00,  1.15it/s]
 12%|█▏        | 157/1261 [02:16<15:59,  1.15it/s]
 13%|█▎        | 158/1261 [02:17<16:03,  1.14it/s]
 13%|█▎        | 159/1261 [02:18<16:00,  1.15it/s]
 13%|█▎        | 160/1261 [02:19<16:02,  1.14it/s]
 13%|█▎        | 161/1261 [02:20<15:59,  1.15it/s]
 13%|█▎        | 162/1261 [02:21<16:00,  1.14it/s]
 13%|█▎        | 163/1261 [02:22<15:58,  1.15it/s]
 13%|█▎        | 164/1261 [02:23<15:56,  1.15it/s]
 13%|█▎        | 165/1261 [02:23<15:55,  1.15it/s]
 13%|█▎        | 166/1261 [02:24<15:52,  1.15it/s]
 13%|█▎        | 167/1261 [02:25<15:53,  1.15it/s]
 13%|█▎        | 168/1261 [02:26<15:50,  1.15it/s]
 13%|█▎        | 169/1261 [02:27<15:49,  1.15it/s]
 13%|█▎        | 170/1261 [02:28<15:58,  1.14it/s]
 14%|█▎        | 171/1261 [02:29<15:55,  1.14it/s]
 14%|█▎        | 172/1261 [02:30<15:50,  1.15it/s]
 14%|█▎        | 173/1261 [02:30<15:49,  1.15it/s]
 14%|█▍        | 174/1261 [02:31<15:45,  1.15it/s]
 14%|█▍        | 175/1261 [02:32<15:58,  1.13it/s]
 14%|█▍        | 176/1261 [02:33<15:51,  1.14it/s]
 14%|█▍        | 177/1261 [02:34<15:49,  1.14it/s]
 14%|█▍        | 178/1261 [02:35<15:48,  1.14it/s]
 14%|█▍        | 179/1261 [02:36<15:48,  1.14it/s]
 14%|█▍        | 180/1261 [02:37<15:42,  1.15it/s]
 14%|█▍        | 181/1261 [02:37<15:40,  1.15it/s]
 14%|█▍        | 182/1261 [02:38<15:38,  1.15it/s]
 15%|█▍        | 183/1261 [02:39<15:37,  1.15it/s]
 15%|█▍        | 184/1261 [02:40<15:35,  1.15it/s]
 15%|█▍        | 185/1261 [02:41<15:39,  1.15it/s]
 15%|█▍        | 186/1261 [02:42<15:40,  1.14it/s]
 15%|█▍        | 187/1261 [02:43<15:36,  1.15it/s]
 15%|█▍        | 188/1261 [02:44<15:33,  1.15it/s]
 15%|█▍        | 189/1261 [02:44<15:30,  1.15it/s]
 15%|█▌        | 190/1261 [02:45<15:32,  1.15it/s]
 15%|█▌        | 191/1261 [02:46<15:31,  1.15it/s]
 15%|█▌        | 192/1261 [02:47<15:46,  1.13it/s]
 15%|█▌        | 193/1261 [02:48<15:40,  1.14it/s]
 15%|█▌        | 194/1261 [02:49<15:35,  1.14it/s]
 15%|█▌        | 195/1261 [02:50<15:30,  1.15it/s]
 16%|█▌        | 196/1261 [02:51<15:26,  1.15it/s]
 16%|█▌        | 197/1261 [02:51<15:25,  1.15it/s]
 16%|█▌        | 198/1261 [02:52<15:31,  1.14it/s]
 16%|█▌        | 199/1261 [02:53<15:27,  1.15it/s]
 16%|█▌        | 200/1261 [02:54<15:24,  1.15it/s]
 16%|█▌        | 201/1261 [02:55<15:20,  1.15it/s]
 16%|█▌        | 202/1261 [02:56<15:19,  1.15it/s]
 16%|█▌        | 203/1261 [02:57<15:19,  1.15it/s]
 16%|█▌        | 204/1261 [02:57<15:17,  1.15it/s]
 16%|█▋        | 205/1261 [02:58<15:18,  1.15it/s]
 16%|█▋        | 206/1261 [02:59<15:40,  1.12it/s]
 16%|█▋        | 207/1261 [03:00<16:04,  1.09it/s]
 16%|█▋        | 208/1261 [03:01<15:47,  1.11it/s]
 17%|█▋        | 209/1261 [03:02<15:36,  1.12it/s]
 17%|█▋        | 210/1261 [03:03<15:27,  1.13it/s]
 17%|█▋        | 211/1261 [03:04<15:23,  1.14it/s]
 17%|█▋        | 212/1261 [03:05<15:19,  1.14it/s]
 17%|█▋        | 213/1261 [03:05<15:18,  1.14it/s]
 17%|█▋        | 214/1261 [03:06<15:16,  1.14it/s]
 17%|█▋        | 215/1261 [03:07<15:13,  1.14it/s]
 17%|█▋        | 216/1261 [03:08<15:10,  1.15it/s]
 17%|█▋        | 217/1261 [03:09<15:15,  1.14it/s]
 17%|█▋        | 218/1261 [03:10<15:11,  1.14it/s]
 17%|█▋        | 219/1261 [03:11<15:33,  1.12it/s]
 17%|█▋        | 220/1261 [03:12<15:24,  1.13it/s]
 18%|█▊        | 221/1261 [03:13<15:17,  1.13it/s]
 18%|█▊        | 222/1261 [03:13<15:11,  1.14it/s]
 18%|█▊        | 223/1261 [03:14<15:07,  1.14it/s]
 18%|█▊        | 224/1261 [03:15<15:06,  1.14it/s]
 18%|█▊        | 225/1261 [03:16<15:05,  1.14it/s]
 18%|█▊        | 226/1261 [03:17<15:02,  1.15it/s]
 18%|█▊        | 227/1261 [03:18<14:59,  1.15it/s]
 18%|█▊        | 228/1261 [03:19<14:56,  1.15it/s]
 18%|█▊        | 229/1261 [03:20<15:06,  1.14it/s]
 18%|█▊        | 230/1261 [03:20<15:09,  1.13it/s]
 18%|█▊        | 231/1261 [03:21<15:04,  1.14it/s]
 18%|█▊        | 232/1261 [03:22<15:06,  1.13it/s]
 18%|█▊        | 233/1261 [03:23<15:05,  1.13it/s]
 19%|█▊        | 234/1261 [03:24<15:00,  1.14it/s]
 19%|█▊        | 235/1261 [03:25<14:57,  1.14it/s]
 19%|█▊        | 236/1261 [03:26<14:54,  1.15it/s]
 19%|█▉        | 237/1261 [03:27<14:51,  1.15it/s]
 19%|█▉        | 238/1261 [03:27<14:51,  1.15it/s]
 19%|█▉        | 239/1261 [03:28<14:55,  1.14it/s]
 19%|█▉        | 240/1261 [03:29<14:54,  1.14it/s]
 19%|█▉        | 241/1261 [03:30<14:52,  1.14it/s]
 19%|█▉        | 242/1261 [03:31<14:56,  1.14it/s]
 19%|█▉        | 243/1261 [03:32<14:56,  1.14it/s]
 19%|█▉        | 244/1261 [03:33<14:54,  1.14it/s]
 19%|█▉        | 245/1261 [03:34<14:52,  1.14it/s]
 20%|█▉        | 246/1261 [03:34<14:48,  1.14it/s]
 20%|█▉        | 247/1261 [03:35<15:02,  1.12it/s]
 20%|█▉        | 248/1261 [03:36<14:54,  1.13it/s]
 20%|█▉        | 249/1261 [03:37<14:50,  1.14it/s]
 20%|█▉        | 250/1261 [03:38<15:08,  1.11it/s]
 20%|█▉        | 251/1261 [03:39<15:19,  1.10it/s]
 20%|█▉        | 252/1261 [03:40<15:17,  1.10it/s]
 20%|██        | 253/1261 [03:41<15:19,  1.10it/s]
 20%|██        | 254/1261 [03:42<15:02,  1.12it/s]
 20%|██        | 255/1261 [03:43<14:51,  1.13it/s]
 20%|██        | 256/1261 [03:43<14:44,  1.14it/s]
 20%|██        | 257/1261 [03:44<14:42,  1.14it/s]
 20%|██        | 258/1261 [03:45<14:40,  1.14it/s]
 21%|██        | 259/1261 [03:46<14:36,  1.14it/s]
 21%|██        | 260/1261 [03:47<14:33,  1.15it/s]
 21%|██        | 261/1261 [03:48<14:31,  1.15it/s]
 21%|██        | 262/1261 [03:49<14:32,  1.14it/s]
 21%|██        | 263/1261 [03:49<14:31,  1.15it/s]
 21%|██        | 264/1261 [03:50<14:29,  1.15it/s]
 21%|██        | 265/1261 [03:51<14:28,  1.15it/s]
 21%|██        | 266/1261 [03:52<14:30,  1.14it/s]
 21%|██        | 267/1261 [03:53<14:26,  1.15it/s]
 21%|██▏       | 268/1261 [03:54<14:23,  1.15it/s]
 21%|██▏       | 269/1261 [03:55<14:22,  1.15it/s]
 21%|██▏       | 270/1261 [03:56<14:34,  1.13it/s]
 21%|██▏       | 271/1261 [03:56<14:29,  1.14it/s]
 22%|██▏       | 272/1261 [03:57<14:27,  1.14it/s]
 22%|██▏       | 273/1261 [03:58<14:23,  1.14it/s]
 22%|██▏       | 274/1261 [03:59<14:27,  1.14it/s]
 22%|██▏       | 275/1261 [04:00<14:24,  1.14it/s]
 22%|██▏       | 276/1261 [04:01<14:20,  1.15it/s]
 22%|██▏       | 277/1261 [04:02<14:17,  1.15it/s]
 22%|██▏       | 278/1261 [04:03<14:40,  1.12it/s]
 22%|██▏       | 279/1261 [04:04<14:31,  1.13it/s]
 22%|██▏       | 280/1261 [04:04<14:26,  1.13it/s]
 22%|██▏       | 281/1261 [04:05<14:25,  1.13it/s]
 22%|██▏       | 282/1261 [04:06<14:26,  1.13it/s]
 22%|██▏       | 283/1261 [04:07<14:44,  1.11it/s]
 23%|██▎       | 284/1261 [04:08<14:36,  1.11it/s]
 23%|██▎       | 285/1261 [04:09<14:31,  1.12it/s]
 23%|██▎       | 286/1261 [04:10<14:33,  1.12it/s]
 23%|██▎       | 287/1261 [04:11<14:29,  1.12it/s]
 23%|██▎       | 288/1261 [04:12<14:36,  1.11it/s]
 23%|██▎       | 289/1261 [04:12<14:28,  1.12it/s]
 23%|██▎       | 290/1261 [04:13<14:46,  1.10it/s]
 23%|██▎       | 291/1261 [04:14<14:33,  1.11it/s]
 23%|██▎       | 292/1261 [04:15<14:22,  1.12it/s]
 23%|██▎       | 293/1261 [04:16<14:14,  1.13it/s]
 23%|██▎       | 294/1261 [04:17<14:27,  1.11it/s]
 23%|██▎       | 295/1261 [04:18<14:18,  1.13it/s]
 23%|██▎       | 296/1261 [04:19<14:11,  1.13it/s]
 24%|██▎       | 297/1261 [04:20<14:08,  1.14it/s]
 24%|██▎       | 298/1261 [04:20<14:03,  1.14it/s]
 24%|██▎       | 299/1261 [04:21<13:59,  1.15it/s]
 24%|██▍       | 300/1261 [04:22<13:57,  1.15it/s]
 24%|██▍       | 301/1261 [04:23<13:58,  1.15it/s]
 24%|██▍       | 302/1261 [04:24<13:55,  1.15it/s]
 24%|██▍       | 303/1261 [04:25<13:51,  1.15it/s]
 24%|██▍       | 304/1261 [04:26<13:50,  1.15it/s]
 24%|██▍       | 305/1261 [04:27<13:52,  1.15it/s]
 24%|██▍       | 306/1261 [04:27<13:53,  1.15it/s]
 24%|██▍       | 307/1261 [04:28<13:49,  1.15it/s]
 24%|██▍       | 308/1261 [04:29<13:46,  1.15it/s]
 25%|██▍       | 309/1261 [04:30<13:49,  1.15it/s]
 25%|██▍       | 310/1261 [04:31<13:48,  1.15it/s]
 25%|██▍       | 311/1261 [04:32<13:45,  1.15it/s]
 25%|██▍       | 312/1261 [04:33<13:43,  1.15it/s]
 25%|██▍       | 313/1261 [04:33<13:42,  1.15it/s]
 25%|██▍       | 314/1261 [04:34<13:40,  1.15it/s]
 25%|██▍       | 315/1261 [04:35<13:38,  1.16it/s]
 25%|██▌       | 316/1261 [04:36<13:37,  1.16it/s]
 25%|██▌       | 317/1261 [04:37<13:53,  1.13it/s]
 25%|██▌       | 318/1261 [04:38<13:48,  1.14it/s]
 25%|██▌       | 319/1261 [04:39<13:43,  1.14it/s]
 25%|██▌       | 320/1261 [04:40<13:39,  1.15it/s]
 25%|██▌       | 321/1261 [04:40<13:42,  1.14it/s]
 26%|██▌       | 322/1261 [04:41<13:40,  1.14it/s]
 26%|██▌       | 323/1261 [04:42<13:38,  1.15it/s]
 26%|██▌       | 324/1261 [04:43<13:37,  1.15it/s]
 26%|██▌       | 325/1261 [04:44<13:35,  1.15it/s]
 26%|██▌       | 326/1261 [04:45<13:33,  1.15it/s]
 26%|██▌       | 327/1261 [04:46<13:32,  1.15it/s]
 26%|██▌       | 328/1261 [04:47<13:30,  1.15it/s]
 26%|██▌       | 329/1261 [04:47<13:29,  1.15it/s]
 26%|██▌       | 330/1261 [04:48<13:30,  1.15it/s]
 26%|██▌       | 331/1261 [04:49<13:34,  1.14it/s]
 26%|██▋       | 332/1261 [04:50<13:31,  1.15it/s]
 26%|██▋       | 333/1261 [04:51<13:28,  1.15it/s]
 26%|██▋       | 334/1261 [04:52<13:26,  1.15it/s]
 27%|██▋       | 335/1261 [04:53<13:25,  1.15it/s]
 27%|██▋       | 336/1261 [04:54<13:24,  1.15it/s]
 27%|██▋       | 337/1261 [04:54<13:24,  1.15it/s]
 27%|██▋       | 338/1261 [04:55<13:27,  1.14it/s]
 27%|██▋       | 339/1261 [04:56<13:26,  1.14it/s]
 27%|██▋       | 340/1261 [04:57<13:25,  1.14it/s]
 27%|██▋       | 341/1261 [04:58<13:29,  1.14it/s]
 27%|██▋       | 342/1261 [04:59<13:27,  1.14it/s]
 27%|██▋       | 343/1261 [05:00<13:24,  1.14it/s]
 27%|██▋       | 344/1261 [05:01<13:20,  1.15it/s]
 27%|██▋       | 345/1261 [05:02<13:43,  1.11it/s]
 27%|██▋       | 346/1261 [05:02<13:33,  1.13it/s]
 28%|██▊       | 347/1261 [05:03<13:26,  1.13it/s]
 28%|██▊       | 348/1261 [05:04<13:20,  1.14it/s]
 28%|██▊       | 349/1261 [05:05<13:18,  1.14it/s]
 28%|██▊       | 350/1261 [05:06<13:19,  1.14it/s]
 28%|██▊       | 351/1261 [05:07<13:16,  1.14it/s]
 28%|██▊       | 352/1261 [05:08<13:14,  1.14it/s]
 28%|██▊       | 353/1261 [05:08<13:12,  1.15it/s]
 28%|██▊       | 354/1261 [05:09<13:29,  1.12it/s]
 28%|██▊       | 355/1261 [05:10<13:21,  1.13it/s]
 28%|██▊       | 356/1261 [05:11<13:17,  1.13it/s]
 28%|██▊       | 357/1261 [05:12<13:14,  1.14it/s]
 28%|██▊       | 358/1261 [05:13<13:10,  1.14it/s]
 28%|██▊       | 359/1261 [05:14<13:29,  1.11it/s]
 29%|██▊       | 360/1261 [05:15<13:22,  1.12it/s]
 29%|██▊       | 361/1261 [05:16<13:23,  1.12it/s]
 29%|██▊       | 362/1261 [05:16<13:15,  1.13it/s]
 29%|██▉       | 363/1261 [05:17<13:11,  1.13it/s]
 29%|██▉       | 364/1261 [05:18<13:09,  1.14it/s]
 29%|██▉       | 365/1261 [05:19<13:05,  1.14it/s]
 29%|██▉       | 366/1261 [05:20<13:02,  1.14it/s]
 29%|██▉       | 367/1261 [05:21<13:00,  1.15it/s]
 29%|██▉       | 368/1261 [05:22<12:58,  1.15it/s]
 29%|██▉       | 369/1261 [05:23<12:56,  1.15it/s]
 29%|██▉       | 370/1261 [05:23<12:55,  1.15it/s]
 29%|██▉       | 371/1261 [05:24<12:54,  1.15it/s]
 30%|██▉       | 372/1261 [05:25<12:52,  1.15it/s]
 30%|██▉       | 373/1261 [05:26<12:49,  1.15it/s]
 30%|██▉       | 374/1261 [05:27<12:47,  1.16it/s]
 30%|██▉       | 375/1261 [05:28<12:49,  1.15it/s]
 30%|██▉       | 376/1261 [05:29<12:52,  1.15it/s]
 30%|██▉       | 377/1261 [05:30<12:57,  1.14it/s]
 30%|██▉       | 378/1261 [05:30<12:54,  1.14it/s]
 30%|███       | 379/1261 [05:31<12:59,  1.13it/s]
 30%|███       | 380/1261 [05:32<12:54,  1.14it/s]
 30%|███       | 381/1261 [05:33<13:07,  1.12it/s]
 30%|███       | 382/1261 [05:34<12:58,  1.13it/s]
 30%|███       | 383/1261 [05:35<12:54,  1.13it/s]
 30%|███       | 384/1261 [05:36<12:49,  1.14it/s]
 31%|███       | 385/1261 [05:37<12:47,  1.14it/s]
 31%|███       | 386/1261 [05:37<12:47,  1.14it/s]
 31%|███       | 387/1261 [05:38<12:54,  1.13it/s]
 31%|███       | 388/1261 [05:39<12:47,  1.14it/s]
 31%|███       | 389/1261 [05:40<12:43,  1.14it/s]
 31%|███       | 390/1261 [05:41<12:40,  1.15it/s]
 31%|███       | 391/1261 [05:42<12:38,  1.15it/s]
 31%|███       | 392/1261 [05:43<12:39,  1.14it/s]
 31%|███       | 393/1261 [05:44<12:37,  1.15it/s]
 31%|███       | 394/1261 [05:44<12:35,  1.15it/s]
 31%|███▏      | 395/1261 [05:45<12:32,  1.15it/s]
 31%|███▏      | 396/1261 [05:46<12:30,  1.15it/s]
 31%|███▏      | 397/1261 [05:47<12:32,  1.15it/s]
 32%|███▏      | 398/1261 [05:48<12:30,  1.15it/s]
 32%|███▏      | 399/1261 [05:49<12:46,  1.12it/s]
 32%|███▏      | 400/1261 [05:50<12:39,  1.13it/s]
 32%|███▏      | 401/1261 [05:51<12:35,  1.14it/s]
 32%|███▏      | 402/1261 [05:51<12:36,  1.14it/s]
 32%|███▏      | 403/1261 [05:52<12:32,  1.14it/s]
 32%|███▏      | 404/1261 [05:53<12:27,  1.15it/s]
 32%|███▏      | 405/1261 [05:54<12:25,  1.15it/s]
 32%|███▏      | 406/1261 [05:55<12:24,  1.15it/s]
 32%|███▏      | 407/1261 [05:56<12:22,  1.15it/s]
 32%|███▏      | 408/1261 [05:57<12:21,  1.15it/s]
 32%|███▏      | 409/1261 [05:58<12:23,  1.15it/s]
 33%|███▎      | 410/1261 [05:58<12:23,  1.14it/s]
 33%|███▎      | 411/1261 [05:59<12:19,  1.15it/s]
 33%|███▎      | 412/1261 [06:00<12:21,  1.15it/s]
 33%|███▎      | 413/1261 [06:01<12:28,  1.13it/s]
 33%|███▎      | 414/1261 [06:02<12:25,  1.14it/s]
 33%|███▎      | 415/1261 [06:03<12:22,  1.14it/s]
 33%|███▎      | 416/1261 [06:04<12:18,  1.14it/s]
 33%|███▎      | 417/1261 [06:05<12:18,  1.14it/s]
 33%|███▎      | 418/1261 [06:05<12:22,  1.14it/s]
 33%|███▎      | 419/1261 [06:06<12:19,  1.14it/s]
 33%|███▎      | 420/1261 [06:07<12:15,  1.14it/s]
 33%|███▎      | 421/1261 [06:08<12:12,  1.15it/s]
 33%|███▎      | 422/1261 [06:09<12:10,  1.15it/s]
 34%|███▎      | 423/1261 [06:10<12:07,  1.15it/s]
 34%|███▎      | 424/1261 [06:11<12:11,  1.14it/s]
 34%|███▎      | 425/1261 [06:12<12:12,  1.14it/s]
 34%|███▍      | 426/1261 [06:12<12:09,  1.14it/s]
 34%|███▍      | 427/1261 [06:13<12:08,  1.15it/s]
 34%|███▍      | 428/1261 [06:14<12:05,  1.15it/s]
 34%|███▍      | 429/1261 [06:15<12:02,  1.15it/s]
 34%|███▍      | 430/1261 [06:16<12:06,  1.14it/s]
 34%|███▍      | 431/1261 [06:17<12:03,  1.15it/s]
 34%|███▍      | 432/1261 [06:18<12:01,  1.15it/s]
 34%|███▍      | 433/1261 [06:19<11:58,  1.15it/s]
 34%|███▍      | 434/1261 [06:19<12:01,  1.15it/s]
 34%|███▍      | 435/1261 [06:20<11:58,  1.15it/s]
 35%|███▍      | 436/1261 [06:21<11:58,  1.15it/s]
 35%|███▍      | 437/1261 [06:22<11:56,  1.15it/s]
 35%|███▍      | 438/1261 [06:23<11:54,  1.15it/s]
 35%|███▍      | 439/1261 [06:24<11:51,  1.15it/s]
 35%|███▍      | 440/1261 [06:25<11:50,  1.16it/s]
 35%|███▍      | 441/1261 [06:25<11:51,  1.15it/s]
 35%|███▌      | 442/1261 [06:26<11:51,  1.15it/s]
 35%|███▌      | 443/1261 [06:27<11:50,  1.15it/s]
 35%|███▌      | 444/1261 [06:28<11:54,  1.14it/s]
 35%|███▌      | 445/1261 [06:29<11:54,  1.14it/s]
 35%|███▌      | 446/1261 [06:30<11:52,  1.14it/s]
 35%|███▌      | 447/1261 [06:31<11:53,  1.14it/s]
 36%|███▌      | 448/1261 [06:32<11:51,  1.14it/s]
 36%|███▌      | 449/1261 [06:32<11:47,  1.15it/s]
 36%|███▌      | 450/1261 [06:33<11:46,  1.15it/s]
 36%|███▌      | 451/1261 [06:34<11:47,  1.14it/s]
 36%|███▌      | 452/1261 [06:35<11:45,  1.15it/s]
 36%|███▌      | 453/1261 [06:36<11:43,  1.15it/s]
 36%|███▌      | 454/1261 [06:37<11:46,  1.14it/s]
 36%|███▌      | 455/1261 [06:38<11:43,  1.15it/s]
 36%|███▌      | 456/1261 [06:39<11:42,  1.15it/s]
 36%|███▌      | 457/1261 [06:40<11:58,  1.12it/s]
 36%|███▋      | 458/1261 [06:40<11:51,  1.13it/s]
 36%|███▋      | 459/1261 [06:41<11:44,  1.14it/s]
 36%|███▋      | 460/1261 [06:42<11:41,  1.14it/s]
 37%|███▋      | 461/1261 [06:43<11:38,  1.15it/s]
 37%|███▋      | 462/1261 [06:44<11:37,  1.15it/s]
 37%|███▋      | 463/1261 [06:45<11:37,  1.14it/s]
 37%|███▋      | 464/1261 [06:46<11:35,  1.15it/s]
 37%|███▋      | 465/1261 [06:47<11:35,  1.14it/s]
 37%|███▋      | 466/1261 [06:47<11:34,  1.14it/s]
 37%|███▋      | 467/1261 [06:48<11:31,  1.15it/s]
 37%|███▋      | 468/1261 [06:49<11:29,  1.15it/s]
 37%|███▋      | 469/1261 [06:50<11:28,  1.15it/s]
 37%|███▋      | 470/1261 [06:51<11:28,  1.15it/s]
 37%|███▋      | 471/1261 [06:52<11:29,  1.15it/s]
 37%|███▋      | 472/1261 [06:53<11:27,  1.15it/s]
 38%|███▊      | 473/1261 [06:53<11:28,  1.14it/s]
 38%|███▊      | 474/1261 [06:54<11:26,  1.15it/s]
 38%|███▊      | 475/1261 [06:55<11:23,  1.15it/s]
 38%|███▊      | 476/1261 [06:56<11:23,  1.15it/s]
 38%|███▊      | 477/1261 [06:57<11:20,  1.15it/s]
 38%|███▊      | 478/1261 [06:58<11:19,  1.15it/s]
 38%|███▊      | 479/1261 [06:59<11:17,  1.15it/s]
 38%|███▊      | 480/1261 [07:00<11:17,  1.15it/s]
 38%|███▊      | 481/1261 [07:00<11:16,  1.15it/s]
 38%|███▊      | 482/1261 [07:01<11:16,  1.15it/s]
 38%|███▊      | 483/1261 [07:02<11:18,  1.15it/s]
 38%|███▊      | 484/1261 [07:03<11:17,  1.15it/s]
 38%|███▊      | 485/1261 [07:04<11:14,  1.15it/s]
 39%|███▊      | 486/1261 [07:05<11:14,  1.15it/s]
 39%|███▊      | 487/1261 [07:06<11:12,  1.15it/s]
 39%|███▊      | 488/1261 [07:07<11:12,  1.15it/s]
 39%|███▉      | 489/1261 [07:07<11:11,  1.15it/s]
 39%|███▉      | 490/1261 [07:08<11:10,  1.15it/s]
 39%|███▉      | 491/1261 [07:09<11:11,  1.15it/s]
 39%|███▉      | 492/1261 [07:10<11:10,  1.15it/s]
 39%|███▉      | 493/1261 [07:11<11:07,  1.15it/s]
 39%|███▉      | 494/1261 [07:12<11:07,  1.15it/s]
 39%|███▉      | 495/1261 [07:13<11:06,  1.15it/s]
 39%|███▉      | 496/1261 [07:13<11:07,  1.15it/s]
 39%|███▉      | 497/1261 [07:14<11:04,  1.15it/s]
 39%|███▉      | 498/1261 [07:15<11:08,  1.14it/s]
 40%|███▉      | 499/1261 [07:16<11:05,  1.15it/s]
 40%|███▉      | 500/1261 [07:17<11:03,  1.15it/s]
 40%|███▉      | 501/1261 [07:18<11:01,  1.15it/s]
 40%|███▉      | 502/1261 [07:19<11:00,  1.15it/s]
 40%|███▉      | 503/1261 [07:20<10:59,  1.15it/s]
 40%|███▉      | 504/1261 [07:20<10:59,  1.15it/s]
 40%|████      | 505/1261 [07:21<10:59,  1.15it/s]
 40%|████      | 506/1261 [07:22<10:58,  1.15it/s]
 40%|████      | 507/1261 [07:23<10:56,  1.15it/s]
 40%|████      | 508/1261 [07:24<10:59,  1.14it/s]
 40%|████      | 509/1261 [07:25<11:12,  1.12it/s]
 40%|████      | 510/1261 [07:26<11:04,  1.13it/s]
 41%|████      | 511/1261 [07:27<11:01,  1.13it/s]
 41%|████      | 512/1261 [07:27<10:59,  1.14it/s]
 41%|████      | 513/1261 [07:28<10:54,  1.14it/s]
 41%|████      | 514/1261 [07:29<10:50,  1.15it/s]
 41%|████      | 515/1261 [07:30<10:48,  1.15it/s]
 41%|████      | 516/1261 [07:31<10:47,  1.15it/s]
 41%|████      | 517/1261 [07:32<10:49,  1.15it/s]
 41%|████      | 518/1261 [07:33<10:48,  1.15it/s]
 41%|████      | 519/1261 [07:34<10:45,  1.15it/s]
 41%|████      | 520/1261 [07:34<10:43,  1.15it/s]
 41%|████▏     | 521/1261 [07:35<10:42,  1.15it/s]
 41%|████▏     | 522/1261 [07:36<10:45,  1.15it/s]
 41%|████▏     | 523/1261 [07:37<10:42,  1.15it/s]
 42%|████▏     | 524/1261 [07:38<10:47,  1.14it/s]
 42%|████▏     | 525/1261 [07:39<10:44,  1.14it/s]
 42%|████▏     | 526/1261 [07:40<10:41,  1.15it/s]
 42%|████▏     | 527/1261 [07:41<10:39,  1.15it/s]
 42%|████▏     | 528/1261 [07:41<10:37,  1.15it/s]
 42%|████▏     | 529/1261 [07:42<10:36,  1.15it/s]
 42%|████▏     | 530/1261 [07:43<10:34,  1.15it/s]
 42%|████▏     | 531/1261 [07:44<10:35,  1.15it/s]
 42%|████▏     | 532/1261 [07:45<10:44,  1.13it/s]
 42%|████▏     | 533/1261 [07:46<10:41,  1.13it/s]
 42%|████▏     | 534/1261 [07:47<10:38,  1.14it/s]
 42%|████▏     | 535/1261 [07:48<10:36,  1.14it/s]
 43%|████▎     | 536/1261 [07:48<10:34,  1.14it/s]
 43%|████▎     | 537/1261 [07:49<10:31,  1.15it/s]
 43%|████▎     | 538/1261 [07:50<10:35,  1.14it/s]
 43%|████▎     | 539/1261 [07:51<10:31,  1.14it/s]
 43%|████▎     | 540/1261 [07:52<10:35,  1.13it/s]
 43%|████▎     | 541/1261 [07:53<10:29,  1.14it/s]
 43%|████▎     | 542/1261 [07:54<10:31,  1.14it/s]
 43%|████▎     | 543/1261 [07:55<10:28,  1.14it/s]
 43%|████▎     | 544/1261 [07:55<10:30,  1.14it/s]
 43%|████▎     | 545/1261 [07:56<10:29,  1.14it/s]
 43%|████▎     | 546/1261 [07:57<10:27,  1.14it/s]
 43%|████▎     | 547/1261 [07:58<10:24,  1.14it/s]
 43%|████▎     | 548/1261 [07:59<10:22,  1.15it/s]
 44%|████▎     | 549/1261 [08:00<10:20,  1.15it/s]
 44%|████▎     | 550/1261 [08:01<10:19,  1.15it/s]
 44%|████▎     | 551/1261 [08:02<10:18,  1.15it/s]
 44%|████▍     | 552/1261 [08:02<10:18,  1.15it/s]
 44%|████▍     | 553/1261 [08:03<10:20,  1.14it/s]
 44%|████▍     | 554/1261 [08:04<10:17,  1.15it/s]
 44%|████▍     | 555/1261 [08:05<10:18,  1.14it/s]
 44%|████▍     | 556/1261 [08:06<10:18,  1.14it/s]
 44%|████▍     | 557/1261 [08:07<10:18,  1.14it/s]
 44%|████▍     | 558/1261 [08:08<10:22,  1.13it/s]
 44%|████▍     | 559/1261 [08:09<10:16,  1.14it/s]
 44%|████▍     | 560/1261 [08:09<10:12,  1.14it/s]
 44%|████▍     | 561/1261 [08:10<10:14,  1.14it/s]
 45%|████▍     | 562/1261 [08:11<10:10,  1.14it/s]
 45%|████▍     | 563/1261 [08:12<10:07,  1.15it/s]
 45%|████▍     | 564/1261 [08:13<10:08,  1.15it/s]
 45%|████▍     | 565/1261 [08:14<10:08,  1.14it/s]
 45%|████▍     | 566/1261 [08:15<10:07,  1.14it/s]
 45%|████▍     | 567/1261 [08:16<10:06,  1.14it/s]
 45%|████▌     | 568/1261 [08:16<10:04,  1.15it/s]
 45%|████▌     | 569/1261 [08:17<10:02,  1.15it/s]
 45%|████▌     | 570/1261 [08:18<10:06,  1.14it/s]
 45%|████▌     | 571/1261 [08:19<10:02,  1.14it/s]
 45%|████▌     | 572/1261 [08:20<10:00,  1.15it/s]
 45%|████▌     | 573/1261 [08:21<10:02,  1.14it/s]
 46%|████▌     | 574/1261 [08:22<09:59,  1.15it/s]
 46%|████▌     | 575/1261 [08:23<09:58,  1.15it/s]
 46%|████▌     | 576/1261 [08:23<09:57,  1.15it/s]
 46%|████▌     | 577/1261 [08:24<09:56,  1.15it/s]
 46%|████▌     | 578/1261 [08:25<09:57,  1.14it/s]
 46%|████▌     | 579/1261 [08:26<09:53,  1.15it/s]
 46%|████▌     | 580/1261 [08:27<09:51,  1.15it/s]
 46%|████▌     | 581/1261 [08:28<09:49,  1.15it/s]
 46%|████▌     | 582/1261 [08:29<09:48,  1.15it/s]
 46%|████▌     | 583/1261 [08:30<09:48,  1.15it/s]
 46%|████▋     | 584/1261 [08:30<09:47,  1.15it/s]
 46%|████▋     | 585/1261 [08:31<09:46,  1.15it/s]
 46%|████▋     | 586/1261 [08:32<09:45,  1.15it/s]
 47%|████▋     | 587/1261 [08:33<09:44,  1.15it/s]
 47%|████▋     | 588/1261 [08:34<09:48,  1.14it/s]
 47%|████▋     | 589/1261 [08:35<09:46,  1.15it/s]
 47%|████▋     | 590/1261 [08:36<09:45,  1.15it/s]
 47%|████▋     | 591/1261 [08:36<09:42,  1.15it/s]
 47%|████▋     | 592/1261 [08:37<09:49,  1.14it/s]
 47%|████▋     | 593/1261 [08:38<09:47,  1.14it/s]
 47%|████▋     | 594/1261 [08:39<09:49,  1.13it/s]
 47%|████▋     | 595/1261 [08:40<09:44,  1.14it/s]
 47%|████▋     | 596/1261 [08:41<09:46,  1.13it/s]
 47%|████▋     | 597/1261 [08:42<09:41,  1.14it/s]
 47%|████▋     | 598/1261 [08:43<09:38,  1.15it/s]
 48%|████▊     | 599/1261 [08:43<09:35,  1.15it/s]
 48%|████▊     | 600/1261 [08:44<09:34,  1.15it/s]
 48%|████▊     | 601/1261 [08:45<09:33,  1.15it/s]
 48%|████▊     | 602/1261 [08:46<09:37,  1.14it/s]
 48%|████▊     | 603/1261 [08:47<09:34,  1.15it/s]
 48%|████▊     | 604/1261 [08:48<09:36,  1.14it/s]
 48%|████▊     | 605/1261 [08:49<09:33,  1.14it/s]
 48%|████▊     | 606/1261 [08:50<09:29,  1.15it/s]
 48%|████▊     | 607/1261 [08:50<09:32,  1.14it/s]
 48%|████▊     | 608/1261 [08:51<09:37,  1.13it/s]
 48%|████▊     | 609/1261 [08:52<09:35,  1.13it/s]
 48%|████▊     | 610/1261 [08:53<09:30,  1.14it/s]
 48%|████▊     | 611/1261 [08:54<09:28,  1.14it/s]
 49%|████▊     | 612/1261 [08:55<09:25,  1.15it/s]
 49%|████▊     | 613/1261 [08:56<09:27,  1.14it/s]
 49%|████▊     | 614/1261 [08:57<09:26,  1.14it/s]
 49%|████▉     | 615/1261 [08:57<09:22,  1.15it/s]
 49%|████▉     | 616/1261 [08:58<09:25,  1.14it/s]
 49%|████▉     | 617/1261 [08:59<09:23,  1.14it/s]
 49%|████▉     | 618/1261 [09:00<09:22,  1.14it/s]
 49%|████▉     | 619/1261 [09:01<09:18,  1.15it/s]
 49%|████▉     | 620/1261 [09:02<09:17,  1.15it/s]
 49%|████▉     | 621/1261 [09:03<09:15,  1.15it/s]
 49%|████▉     | 622/1261 [09:04<09:22,  1.14it/s]
 49%|████▉     | 623/1261 [09:05<09:24,  1.13it/s]
 49%|████▉     | 624/1261 [09:05<09:25,  1.13it/s]
 50%|████▉     | 625/1261 [09:06<09:19,  1.14it/s]
 50%|████▉     | 626/1261 [09:07<09:18,  1.14it/s]
 50%|████▉     | 627/1261 [09:08<09:15,  1.14it/s]
 50%|████▉     | 628/1261 [09:09<09:14,  1.14it/s]
 50%|████▉     | 629/1261 [09:10<09:14,  1.14it/s]
 50%|████▉     | 630/1261 [09:11<09:10,  1.15it/s]
 50%|█████     | 631/1261 [09:12<09:07,  1.15it/s]
 50%|█████     | 632/1261 [09:12<09:05,  1.15it/s]
 50%|█████     | 633/1261 [09:13<09:06,  1.15it/s]
 50%|█████     | 634/1261 [09:14<09:03,  1.15it/s]
 50%|█████     | 635/1261 [09:15<09:02,  1.15it/s]
 50%|█████     | 636/1261 [09:16<09:05,  1.15it/s]
 51%|█████     | 637/1261 [09:17<09:03,  1.15it/s]
 51%|█████     | 638/1261 [09:18<09:01,  1.15it/s]
 51%|█████     | 639/1261 [09:18<09:04,  1.14it/s]
 51%|█████     | 640/1261 [09:19<09:02,  1.15it/s]
 51%|█████     | 641/1261 [09:20<09:00,  1.15it/s]
 51%|█████     | 642/1261 [09:21<08:58,  1.15it/s]
 51%|█████     | 643/1261 [09:22<08:58,  1.15it/s]
 51%|█████     | 644/1261 [09:23<08:55,  1.15it/s]
 51%|█████     | 645/1261 [09:24<08:58,  1.14it/s]
 51%|█████     | 646/1261 [09:25<08:58,  1.14it/s]
 51%|█████▏    | 647/1261 [09:25<08:57,  1.14it/s]
 51%|█████▏    | 648/1261 [09:26<08:55,  1.14it/s]
 51%|█████▏    | 649/1261 [09:27<08:52,  1.15it/s]
 52%|█████▏    | 650/1261 [09:28<08:54,  1.14it/s]
 52%|█████▏    | 651/1261 [09:29<08:56,  1.14it/s]
 52%|█████▏    | 652/1261 [09:30<08:53,  1.14it/s]
 52%|█████▏    | 653/1261 [09:31<08:50,  1.15it/s]
 52%|█████▏    | 654/1261 [09:32<08:47,  1.15it/s]
 52%|█████▏    | 655/1261 [09:32<08:45,  1.15it/s]
 52%|█████▏    | 656/1261 [09:33<08:47,  1.15it/s]
 52%|█████▏    | 657/1261 [09:34<08:51,  1.14it/s]
 52%|█████▏    | 658/1261 [09:35<08:51,  1.13it/s]
 52%|█████▏    | 659/1261 [09:36<08:52,  1.13it/s]
 52%|█████▏    | 660/1261 [09:37<08:48,  1.14it/s]
 52%|█████▏    | 661/1261 [09:38<08:45,  1.14it/s]
 52%|█████▏    | 662/1261 [09:39<08:42,  1.15it/s]
 53%|█████▎    | 663/1261 [09:39<08:40,  1.15it/s]
 53%|█████▎    | 664/1261 [09:40<08:38,  1.15it/s]
 53%|█████▎    | 665/1261 [09:41<08:39,  1.15it/s]
 53%|█████▎    | 666/1261 [09:42<08:37,  1.15it/s]
 53%|█████▎    | 667/1261 [09:43<08:35,  1.15it/s]
 53%|█████▎    | 668/1261 [09:44<08:34,  1.15it/s]
 53%|█████▎    | 669/1261 [09:45<08:36,  1.15it/s]
 53%|█████▎    | 670/1261 [09:46<08:35,  1.15it/s]
 53%|█████▎    | 671/1261 [09:46<08:32,  1.15it/s]
 53%|█████▎    | 672/1261 [09:47<08:31,  1.15it/s]
 53%|█████▎    | 673/1261 [09:48<08:29,  1.15it/s]
 53%|█████▎    | 674/1261 [09:49<08:29,  1.15it/s]
 54%|█████▎    | 675/1261 [09:50<08:27,  1.15it/s]
 54%|█████▎    | 676/1261 [09:51<08:28,  1.15it/s]
 54%|█████▎    | 677/1261 [09:52<08:34,  1.14it/s]
 54%|█████▍    | 678/1261 [09:53<08:31,  1.14it/s]
 54%|█████▍    | 679/1261 [09:53<08:28,  1.14it/s]
 54%|█████▍    | 680/1261 [09:54<08:26,  1.15it/s]
 54%|█████▍    | 681/1261 [09:55<08:24,  1.15it/s]
 54%|█████▍    | 682/1261 [09:56<08:22,  1.15it/s]
 54%|█████▍    | 683/1261 [09:57<08:20,  1.15it/s]
 54%|█████▍    | 684/1261 [09:58<08:19,  1.16it/s]
 54%|█████▍    | 685/1261 [09:59<08:17,  1.16it/s]
 54%|█████▍    | 686/1261 [09:59<08:16,  1.16it/s]
 54%|█████▍    | 687/1261 [10:00<08:20,  1.15it/s]
 55%|█████▍    | 688/1261 [10:01<08:18,  1.15it/s]
 55%|█████▍    | 689/1261 [10:02<08:16,  1.15it/s]
 55%|█████▍    | 690/1261 [10:03<08:19,  1.14it/s]
 55%|█████▍    | 691/1261 [10:04<08:18,  1.14it/s]
 55%|█████▍    | 692/1261 [10:05<08:17,  1.14it/s]
 55%|█████▍    | 693/1261 [10:06<08:15,  1.15it/s]
 55%|█████▌    | 694/1261 [10:06<08:15,  1.15it/s]
 55%|█████▌    | 695/1261 [10:07<08:12,  1.15it/s]
 55%|█████▌    | 696/1261 [10:08<08:11,  1.15it/s]
 55%|█████▌    | 697/1261 [10:09<08:09,  1.15it/s]
 55%|█████▌    | 698/1261 [10:10<08:21,  1.12it/s]
 55%|█████▌    | 699/1261 [10:11<08:18,  1.13it/s]
 56%|█████▌    | 700/1261 [10:12<08:13,  1.14it/s]
 56%|█████▌    | 701/1261 [10:13<08:12,  1.14it/s]
 56%|█████▌    | 702/1261 [10:13<08:10,  1.14it/s]
 56%|█████▌    | 703/1261 [10:14<08:08,  1.14it/s]
 56%|█████▌    | 704/1261 [10:15<08:06,  1.15it/s]
 56%|█████▌    | 705/1261 [10:16<08:04,  1.15it/s]
 56%|█████▌    | 706/1261 [10:17<08:02,  1.15it/s]
 56%|█████▌    | 707/1261 [10:18<08:01,  1.15it/s]
 56%|█████▌    | 708/1261 [10:19<08:01,  1.15it/s]
 56%|█████▌    | 709/1261 [10:20<07:59,  1.15it/s]
 56%|█████▋    | 710/1261 [10:20<07:58,  1.15it/s]
 56%|█████▋    | 711/1261 [10:21<07:58,  1.15it/s]
 56%|█████▋    | 712/1261 [10:22<07:57,  1.15it/s]
 57%|█████▋    | 713/1261 [10:23<07:56,  1.15it/s]
 57%|█████▋    | 714/1261 [10:24<07:55,  1.15it/s]
 57%|█████▋    | 715/1261 [10:25<07:54,  1.15it/s]
 57%|█████▋    | 716/1261 [10:26<07:58,  1.14it/s]
 57%|█████▋    | 717/1261 [10:27<07:58,  1.14it/s]
 57%|█████▋    | 718/1261 [10:27<07:56,  1.14it/s]
 57%|█████▋    | 719/1261 [10:28<07:54,  1.14it/s]
 57%|█████▋    | 720/1261 [10:29<07:53,  1.14it/s]
 57%|█████▋    | 721/1261 [10:30<07:51,  1.15it/s]
 57%|█████▋    | 722/1261 [10:31<07:49,  1.15it/s]
 57%|█████▋    | 723/1261 [10:32<07:47,  1.15it/s]
 57%|█████▋    | 724/1261 [10:33<07:47,  1.15it/s]
 57%|█████▋    | 725/1261 [10:33<07:45,  1.15it/s]
 58%|█████▊    | 726/1261 [10:34<07:45,  1.15it/s]
 58%|█████▊    | 727/1261 [10:35<07:45,  1.15it/s]
 58%|█████▊    | 728/1261 [10:36<07:43,  1.15it/s]
 58%|█████▊    | 729/1261 [10:37<07:44,  1.15it/s]
 58%|█████▊    | 730/1261 [10:38<07:42,  1.15it/s]
 58%|█████▊    | 731/1261 [10:39<07:43,  1.14it/s]
 58%|█████▊    | 732/1261 [10:40<07:41,  1.15it/s]
 58%|█████▊    | 733/1261 [10:40<07:39,  1.15it/s]
 58%|█████▊    | 734/1261 [10:41<07:37,  1.15it/s]
 58%|█████▊    | 735/1261 [10:42<07:37,  1.15it/s]
 58%|█████▊    | 736/1261 [10:43<07:36,  1.15it/s]
 58%|█████▊    | 737/1261 [10:44<07:34,  1.15it/s]
 59%|█████▊    | 738/1261 [10:45<07:33,  1.15it/s]
 59%|█████▊    | 739/1261 [10:46<07:32,  1.15it/s]
 59%|█████▊    | 740/1261 [10:47<07:33,  1.15it/s]
 59%|█████▉    | 741/1261 [10:47<07:35,  1.14it/s]
 59%|█████▉    | 742/1261 [10:48<07:35,  1.14it/s]
 59%|█████▉    | 743/1261 [10:49<07:34,  1.14it/s]
 59%|█████▉    | 744/1261 [10:50<07:30,  1.15it/s]
 59%|█████▉    | 745/1261 [10:51<07:33,  1.14it/s]
 59%|█████▉    | 746/1261 [10:52<07:32,  1.14it/s]
 59%|█████▉    | 747/1261 [10:53<07:29,  1.14it/s]
 59%|█████▉    | 748/1261 [10:54<07:27,  1.15it/s]
 59%|█████▉    | 749/1261 [10:54<07:26,  1.15it/s]
 59%|█████▉    | 750/1261 [10:55<07:24,  1.15it/s]
 60%|█████▉    | 751/1261 [10:56<07:25,  1.14it/s]
 60%|█████▉    | 752/1261 [10:57<07:24,  1.15it/s]
 60%|█████▉    | 753/1261 [10:58<07:26,  1.14it/s]
 60%|█████▉    | 754/1261 [10:59<07:23,  1.14it/s]
 60%|█████▉    | 755/1261 [11:00<07:25,  1.13it/s]
 60%|█████▉    | 756/1261 [11:01<07:22,  1.14it/s]
 60%|██████    | 757/1261 [11:01<07:20,  1.14it/s]
 60%|██████    | 758/1261 [11:02<07:19,  1.14it/s]
 60%|██████    | 759/1261 [11:03<07:20,  1.14it/s]
 60%|██████    | 760/1261 [11:04<07:18,  1.14it/s]
 60%|██████    | 761/1261 [11:05<07:16,  1.14it/s]
 60%|██████    | 762/1261 [11:06<07:14,  1.15it/s]
 61%|██████    | 763/1261 [11:07<07:13,  1.15it/s]
 61%|██████    | 764/1261 [11:08<07:14,  1.14it/s]
 61%|██████    | 765/1261 [11:08<07:11,  1.15it/s]
 61%|██████    | 766/1261 [11:09<07:09,  1.15it/s]
 61%|██████    | 767/1261 [11:10<07:08,  1.15it/s]
 61%|██████    | 768/1261 [11:11<07:07,  1.15it/s]
 61%|██████    | 769/1261 [11:12<07:05,  1.16it/s]
 61%|██████    | 770/1261 [11:13<07:07,  1.15it/s]
 61%|██████    | 771/1261 [11:14<07:05,  1.15it/s]
 61%|██████    | 772/1261 [11:14<07:05,  1.15it/s]
 61%|██████▏   | 773/1261 [11:15<07:04,  1.15it/s]
 61%|██████▏   | 774/1261 [11:16<07:02,  1.15it/s]
 61%|██████▏   | 775/1261 [11:17<07:01,  1.15it/s]
 62%|██████▏   | 776/1261 [11:18<07:00,  1.15it/s]
 62%|██████▏   | 777/1261 [11:19<07:00,  1.15it/s]
 62%|██████▏   | 778/1261 [11:20<06:59,  1.15it/s]
 62%|██████▏   | 779/1261 [11:21<06:58,  1.15it/s]
 62%|██████▏   | 780/1261 [11:21<06:57,  1.15it/s]
 62%|██████▏   | 781/1261 [11:22<06:56,  1.15it/s]
 62%|██████▏   | 782/1261 [11:23<06:56,  1.15it/s]
 62%|██████▏   | 783/1261 [11:24<06:56,  1.15it/s]
 62%|██████▏   | 784/1261 [11:25<06:54,  1.15it/s]
 62%|██████▏   | 785/1261 [11:26<06:53,  1.15it/s]
 62%|██████▏   | 786/1261 [11:27<06:52,  1.15it/s]
 62%|██████▏   | 787/1261 [11:28<06:51,  1.15it/s]
 62%|██████▏   | 788/1261 [11:28<06:50,  1.15it/s]
 63%|██████▎   | 789/1261 [11:29<06:49,  1.15it/s]
 63%|██████▎   | 790/1261 [11:30<06:49,  1.15it/s]
 63%|██████▎   | 791/1261 [11:31<06:48,  1.15it/s]
 63%|██████▎   | 792/1261 [11:32<06:48,  1.15it/s]
 63%|██████▎   | 793/1261 [11:33<06:47,  1.15it/s]
 63%|██████▎   | 794/1261 [11:34<06:48,  1.14it/s]
 63%|██████▎   | 795/1261 [11:34<06:46,  1.15it/s]
 63%|██████▎   | 796/1261 [11:35<06:45,  1.15it/s]
 63%|██████▎   | 797/1261 [11:36<06:45,  1.15it/s]
 63%|██████▎   | 798/1261 [11:37<06:44,  1.15it/s]
 63%|██████▎   | 799/1261 [11:38<06:58,  1.10it/s]
 63%|██████▎   | 800/1261 [11:39<06:53,  1.12it/s]
 64%|██████▎   | 801/1261 [11:40<06:48,  1.13it/s]
 64%|██████▎   | 802/1261 [11:41<06:44,  1.13it/s]
 64%|██████▎   | 803/1261 [11:42<06:43,  1.14it/s]
 64%|██████▍   | 804/1261 [11:42<06:43,  1.13it/s]
 64%|██████▍   | 805/1261 [11:43<06:41,  1.14it/s]
 64%|██████▍   | 806/1261 [11:44<06:41,  1.13it/s]
 64%|██████▍   | 807/1261 [11:45<06:38,  1.14it/s]
 64%|██████▍   | 808/1261 [11:46<06:36,  1.14it/s]
 64%|██████▍   | 809/1261 [11:47<06:44,  1.12it/s]
 64%|██████▍   | 810/1261 [11:48<06:40,  1.13it/s]
 64%|██████▍   | 811/1261 [11:49<06:36,  1.13it/s]
 64%|██████▍   | 812/1261 [11:50<06:34,  1.14it/s]
 64%|██████▍   | 813/1261 [11:50<06:31,  1.14it/s]
 65%|██████▍   | 814/1261 [11:51<06:29,  1.15it/s]
 65%|██████▍   | 815/1261 [11:52<06:30,  1.14it/s]
 65%|██████▍   | 816/1261 [11:53<06:31,  1.14it/s]
 65%|██████▍   | 817/1261 [11:54<06:28,  1.14it/s]
 65%|██████▍   | 818/1261 [11:55<06:26,  1.15it/s]
 65%|██████▍   | 819/1261 [11:56<06:25,  1.15it/s]
 65%|██████▌   | 820/1261 [11:57<06:26,  1.14it/s]
 65%|██████▌   | 821/1261 [11:57<06:28,  1.13it/s]
 65%|██████▌   | 822/1261 [11:58<06:26,  1.14it/s]
 65%|██████▌   | 823/1261 [11:59<06:25,  1.14it/s]
 65%|██████▌   | 824/1261 [12:00<06:23,  1.14it/s]
 65%|██████▌   | 825/1261 [12:01<06:23,  1.14it/s]
 66%|██████▌   | 826/1261 [12:02<06:21,  1.14it/s]
 66%|██████▌   | 827/1261 [12:03<06:34,  1.10it/s]
 66%|██████▌   | 828/1261 [12:04<06:28,  1.11it/s]
 66%|██████▌   | 829/1261 [12:05<06:31,  1.10it/s]
 66%|██████▌   | 830/1261 [12:05<06:26,  1.12it/s]
 66%|██████▌   | 831/1261 [12:06<06:23,  1.12it/s]
 66%|██████▌   | 832/1261 [12:07<06:20,  1.13it/s]
 66%|██████▌   | 833/1261 [12:08<06:17,  1.13it/s]
 66%|██████▌   | 834/1261 [12:09<06:14,  1.14it/s]
 66%|██████▌   | 835/1261 [12:10<06:12,  1.14it/s]
 66%|██████▋   | 836/1261 [12:11<06:11,  1.14it/s]
 66%|██████▋   | 837/1261 [12:12<06:10,  1.14it/s]
 66%|██████▋   | 838/1261 [12:12<06:12,  1.13it/s]
 67%|██████▋   | 839/1261 [12:13<06:10,  1.14it/s]
 67%|██████▋   | 840/1261 [12:14<06:08,  1.14it/s]
 67%|██████▋   | 841/1261 [12:15<06:06,  1.15it/s]
 67%|██████▋   | 842/1261 [12:16<06:05,  1.15it/s]
 67%|██████▋   | 843/1261 [12:17<06:03,  1.15it/s]
 67%|██████▋   | 844/1261 [12:18<06:02,  1.15it/s]
 67%|██████▋   | 845/1261 [12:19<06:00,  1.15it/s]
 67%|██████▋   | 846/1261 [12:19<05:59,  1.15it/s]
 67%|██████▋   | 847/1261 [12:20<05:58,  1.15it/s]
 67%|██████▋   | 848/1261 [12:21<05:59,  1.15it/s]
 67%|██████▋   | 849/1261 [12:22<05:58,  1.15it/s]
 67%|██████▋   | 850/1261 [12:23<05:56,  1.15it/s]
 67%|██████▋   | 851/1261 [12:24<05:55,  1.15it/s]
 68%|██████▊   | 852/1261 [12:25<05:55,  1.15it/s]
 68%|██████▊   | 853/1261 [12:25<05:55,  1.15it/s]
 68%|██████▊   | 854/1261 [12:26<05:54,  1.15it/s]
 68%|██████▊   | 855/1261 [12:27<05:54,  1.15it/s]
 68%|██████▊   | 856/1261 [12:28<05:53,  1.15it/s]
 68%|██████▊   | 857/1261 [12:29<05:51,  1.15it/s]
 68%|██████▊   | 858/1261 [12:30<05:51,  1.15it/s]
 68%|██████▊   | 859/1261 [12:31<05:50,  1.15it/s]
 68%|██████▊   | 860/1261 [12:32<05:49,  1.15it/s]
 68%|██████▊   | 861/1261 [12:32<05:47,  1.15it/s]
 68%|██████▊   | 862/1261 [12:33<05:47,  1.15it/s]
 68%|██████▊   | 863/1261 [12:34<05:45,  1.15it/s]
 69%|██████▊   | 864/1261 [12:35<05:44,  1.15it/s]
 69%|██████▊   | 865/1261 [12:36<05:51,  1.13it/s]
 69%|██████▊   | 866/1261 [12:37<05:49,  1.13it/s]
 69%|██████▉   | 867/1261 [12:38<05:47,  1.13it/s]
 69%|██████▉   | 868/1261 [12:39<05:46,  1.14it/s]
 69%|██████▉   | 869/1261 [12:39<05:42,  1.14it/s]
 69%|██████▉   | 870/1261 [12:40<05:43,  1.14it/s]
 69%|██████▉   | 871/1261 [12:41<05:40,  1.14it/s]
 69%|██████▉   | 872/1261 [12:42<05:38,  1.15it/s]
 69%|██████▉   | 873/1261 [12:43<05:37,  1.15it/s]
 69%|██████▉   | 874/1261 [12:44<05:38,  1.14it/s]
 69%|██████▉   | 875/1261 [12:45<05:37,  1.14it/s]
 69%|██████▉   | 876/1261 [12:46<05:38,  1.14it/s]
 70%|██████▉   | 877/1261 [12:46<05:35,  1.14it/s]
 70%|██████▉   | 878/1261 [12:47<05:35,  1.14it/s]
 70%|██████▉   | 879/1261 [12:48<05:41,  1.12it/s]
 70%|██████▉   | 880/1261 [12:49<05:37,  1.13it/s]
 70%|██████▉   | 881/1261 [12:50<05:35,  1.13it/s]
 70%|██████▉   | 882/1261 [12:51<05:38,  1.12it/s]
 70%|███████   | 883/1261 [12:52<05:34,  1.13it/s]
 70%|███████   | 884/1261 [12:53<05:31,  1.14it/s]
 70%|███████   | 885/1261 [12:54<05:30,  1.14it/s]
 70%|███████   | 886/1261 [12:54<05:28,  1.14it/s]
 70%|███████   | 887/1261 [12:55<05:27,  1.14it/s]
 70%|███████   | 888/1261 [12:56<05:28,  1.14it/s]
 70%|███████   | 889/1261 [12:57<05:26,  1.14it/s]
 71%|███████   | 890/1261 [12:58<05:27,  1.13it/s]
 71%|███████   | 891/1261 [12:59<05:26,  1.13it/s]
 71%|███████   | 892/1261 [13:00<05:24,  1.14it/s]
 71%|███████   | 893/1261 [13:01<05:24,  1.13it/s]
 71%|███████   | 894/1261 [13:01<05:22,  1.14it/s]
 71%|███████   | 895/1261 [13:02<05:19,  1.15it/s]
 71%|███████   | 896/1261 [13:03<05:20,  1.14it/s]
 71%|███████   | 897/1261 [13:04<05:18,  1.14it/s]
 71%|███████   | 898/1261 [13:05<05:19,  1.14it/s]
 71%|███████▏  | 899/1261 [13:06<05:17,  1.14it/s]
 71%|███████▏  | 900/1261 [13:07<05:18,  1.13it/s]
 71%|███████▏  | 901/1261 [13:08<05:15,  1.14it/s]
 72%|███████▏  | 902/1261 [13:08<05:16,  1.14it/s]
 72%|███████▏  | 903/1261 [13:09<05:13,  1.14it/s]
 72%|███████▏  | 904/1261 [13:10<05:14,  1.13it/s]
 72%|███████▏  | 905/1261 [13:11<05:12,  1.14it/s]
 72%|███████▏  | 906/1261 [13:12<05:10,  1.14it/s]
 72%|███████▏  | 907/1261 [13:13<05:09,  1.14it/s]
 72%|███████▏  | 908/1261 [13:14<05:07,  1.15it/s]
 72%|███████▏  | 909/1261 [13:15<05:05,  1.15it/s]
 72%|███████▏  | 910/1261 [13:15<05:05,  1.15it/s]
 72%|███████▏  | 911/1261 [13:16<05:05,  1.14it/s]
 72%|███████▏  | 912/1261 [13:17<05:04,  1.15it/s]
 72%|███████▏  | 913/1261 [13:18<05:03,  1.15it/s]
 72%|███████▏  | 914/1261 [13:19<05:03,  1.14it/s]
 73%|███████▎  | 915/1261 [13:20<05:04,  1.14it/s]
 73%|███████▎  | 916/1261 [13:21<05:02,  1.14it/s]
 73%|███████▎  | 917/1261 [13:22<05:00,  1.15it/s]
 73%|███████▎  | 918/1261 [13:22<04:59,  1.14it/s]
 73%|███████▎  | 919/1261 [13:23<04:58,  1.14it/s]
 73%|███████▎  | 920/1261 [13:24<04:57,  1.15it/s]
 73%|███████▎  | 921/1261 [13:25<04:55,  1.15it/s]
 73%|███████▎  | 922/1261 [13:26<04:54,  1.15it/s]
 73%|███████▎  | 923/1261 [13:27<04:54,  1.15it/s]
 73%|███████▎  | 924/1261 [13:28<04:53,  1.15it/s]
 73%|███████▎  | 925/1261 [13:29<04:52,  1.15it/s]
 73%|███████▎  | 926/1261 [13:29<04:51,  1.15it/s]
 74%|███████▎  | 927/1261 [13:30<04:50,  1.15it/s]
 74%|███████▎  | 928/1261 [13:31<04:50,  1.15it/s]
 74%|███████▎  | 929/1261 [13:32<04:49,  1.15it/s]
 74%|███████▍  | 930/1261 [13:33<04:48,  1.15it/s]
 74%|███████▍  | 931/1261 [13:34<04:47,  1.15it/s]
 74%|███████▍  | 932/1261 [13:35<04:46,  1.15it/s]
 74%|███████▍  | 933/1261 [13:36<04:46,  1.14it/s]
 74%|███████▍  | 934/1261 [13:36<04:47,  1.14it/s]
 74%|███████▍  | 935/1261 [13:37<04:47,  1.13it/s]
 74%|███████▍  | 936/1261 [13:38<04:45,  1.14it/s]
 74%|███████▍  | 937/1261 [13:39<04:43,  1.14it/s]
 74%|███████▍  | 938/1261 [13:40<04:42,  1.15it/s]
 74%|███████▍  | 939/1261 [13:41<04:40,  1.15it/s]
 75%|███████▍  | 940/1261 [13:42<04:39,  1.15it/s]
 75%|███████▍  | 941/1261 [13:43<04:38,  1.15it/s]
 75%|███████▍  | 942/1261 [13:43<04:37,  1.15it/s]
 75%|███████▍  | 943/1261 [13:44<04:37,  1.14it/s]
 75%|███████▍  | 944/1261 [13:45<04:36,  1.15it/s]
 75%|███████▍  | 945/1261 [13:46<04:34,  1.15it/s]
 75%|███████▌  | 946/1261 [13:47<04:35,  1.14it/s]
 75%|███████▌  | 947/1261 [13:48<04:33,  1.15it/s]
 75%|███████▌  | 948/1261 [13:49<04:31,  1.15it/s]
 75%|███████▌  | 949/1261 [13:49<04:30,  1.15it/s]
 75%|███████▌  | 950/1261 [13:50<04:30,  1.15it/s]
 75%|███████▌  | 951/1261 [13:51<04:28,  1.15it/s]
 75%|███████▌  | 952/1261 [13:52<04:29,  1.15it/s]
 76%|███████▌  | 953/1261 [13:53<04:29,  1.14it/s]
 76%|███████▌  | 954/1261 [13:54<04:31,  1.13it/s]
 76%|███████▌  | 955/1261 [13:55<04:28,  1.14it/s]
 76%|███████▌  | 956/1261 [13:56<04:31,  1.12it/s]
 76%|███████▌  | 957/1261 [13:57<04:29,  1.13it/s]
 76%|███████▌  | 958/1261 [13:57<04:26,  1.14it/s]
 76%|███████▌  | 959/1261 [13:58<04:24,  1.14it/s]
 76%|███████▌  | 960/1261 [13:59<04:26,  1.13it/s]
 76%|███████▌  | 961/1261 [14:00<04:24,  1.14it/s]
 76%|███████▋  | 962/1261 [14:01<04:23,  1.14it/s]
 76%|███████▋  | 963/1261 [14:02<04:21,  1.14it/s]
 76%|███████▋  | 964/1261 [14:03<04:20,  1.14it/s]
 77%|███████▋  | 965/1261 [14:04<04:18,  1.14it/s]
 77%|███████▋  | 966/1261 [14:04<04:17,  1.14it/s]
 77%|███████▋  | 967/1261 [14:05<04:16,  1.15it/s]
 77%|███████▋  | 968/1261 [14:06<04:15,  1.15it/s]
 77%|███████▋  | 969/1261 [14:07<04:14,  1.15it/s]
 77%|███████▋  | 970/1261 [14:08<04:13,  1.15it/s]
 77%|███████▋  | 971/1261 [14:09<04:13,  1.15it/s]
 77%|███████▋  | 972/1261 [14:10<04:11,  1.15it/s]
 77%|███████▋  | 973/1261 [14:11<04:11,  1.15it/s]
 77%|███████▋  | 974/1261 [14:11<04:10,  1.15it/s]
 77%|███████▋  | 975/1261 [14:12<04:10,  1.14it/s]
 77%|███████▋  | 976/1261 [14:13<04:10,  1.14it/s]
 77%|███████▋  | 977/1261 [14:14<04:09,  1.14it/s]
 78%|███████▊  | 978/1261 [14:15<04:07,  1.14it/s]
 78%|███████▊  | 979/1261 [14:16<04:06,  1.14it/s]
 78%|███████▊  | 980/1261 [14:17<04:10,  1.12it/s]
 78%|███████▊  | 981/1261 [14:18<04:08,  1.13it/s]
 78%|███████▊  | 982/1261 [14:18<04:05,  1.14it/s]
 78%|███████▊  | 983/1261 [14:19<04:04,  1.14it/s]
 78%|███████▊  | 984/1261 [14:20<04:03,  1.14it/s]
 78%|███████▊  | 985/1261 [14:21<04:16,  1.08it/s]
 78%|███████▊  | 986/1261 [14:22<04:10,  1.10it/s]
 78%|███████▊  | 987/1261 [14:23<04:06,  1.11it/s]
 78%|███████▊  | 988/1261 [14:24<04:02,  1.13it/s]
 78%|███████▊  | 989/1261 [14:25<03:59,  1.13it/s]
 79%|███████▊  | 990/1261 [14:26<03:58,  1.14it/s]
 79%|███████▊  | 991/1261 [14:26<03:56,  1.14it/s]
 79%|███████▊  | 992/1261 [14:27<03:56,  1.14it/s]
 79%|███████▊  | 993/1261 [14:28<03:56,  1.13it/s]
 79%|███████▉  | 994/1261 [14:29<03:54,  1.14it/s]
 79%|███████▉  | 995/1261 [14:30<03:53,  1.14it/s]
 79%|███████▉  | 996/1261 [14:31<03:51,  1.14it/s]
 79%|███████▉  | 997/1261 [14:32<03:53,  1.13it/s]
 79%|███████▉  | 998/1261 [14:33<03:52,  1.13it/s]
 79%|███████▉  | 999/1261 [14:34<03:50,  1.14it/s]
 79%|███████▉  | 1000/1261 [14:34<03:51,  1.13it/s]
 79%|███████▉  | 1001/1261 [14:35<03:49,  1.13it/s]
 79%|███████▉  | 1002/1261 [14:36<03:48,  1.14it/s]
 80%|███████▉  | 1003/1261 [14:37<03:46,  1.14it/s]
 80%|███████▉  | 1004/1261 [14:38<03:51,  1.11it/s]
 80%|███████▉  | 1005/1261 [14:39<03:48,  1.12it/s]
 80%|███████▉  | 1006/1261 [14:40<03:46,  1.13it/s]
 80%|███████▉  | 1007/1261 [14:41<03:44,  1.13it/s]
 80%|███████▉  | 1008/1261 [14:41<03:42,  1.14it/s]
 80%|████████  | 1009/1261 [14:42<03:40,  1.14it/s]
 80%|████████  | 1010/1261 [14:43<03:39,  1.14it/s]
 80%|████████  | 1011/1261 [14:44<03:38,  1.14it/s]
 80%|████████  | 1012/1261 [14:45<03:37,  1.14it/s]
 80%|████████  | 1013/1261 [14:46<03:35,  1.15it/s]
 80%|████████  | 1014/1261 [14:47<03:34,  1.15it/s]
 80%|████████  | 1015/1261 [14:48<03:33,  1.15it/s]
 81%|████████  | 1016/1261 [14:48<03:32,  1.15it/s]
 81%|████████  | 1017/1261 [14:49<03:32,  1.15it/s]
 81%|████████  | 1018/1261 [14:50<03:31,  1.15it/s]
 81%|████████  | 1019/1261 [14:51<03:33,  1.14it/s]
 81%|████████  | 1020/1261 [14:52<03:32,  1.14it/s]
 81%|████████  | 1021/1261 [14:53<03:31,  1.14it/s]
 81%|████████  | 1022/1261 [14:54<03:29,  1.14it/s]
 81%|████████  | 1023/1261 [14:55<03:29,  1.14it/s]
 81%|████████  | 1024/1261 [14:56<03:29,  1.13it/s]
 81%|████████▏ | 1025/1261 [14:56<03:28,  1.13it/s]
 81%|████████▏ | 1026/1261 [14:57<03:26,  1.14it/s]
 81%|████████▏ | 1027/1261 [14:58<03:24,  1.14it/s]
 82%|████████▏ | 1028/1261 [14:59<03:23,  1.14it/s]
 82%|████████▏ | 1029/1261 [15:00<03:22,  1.15it/s]
 82%|████████▏ | 1030/1261 [15:01<03:21,  1.15it/s]
 82%|████████▏ | 1031/1261 [15:02<03:19,  1.15it/s]
 82%|████████▏ | 1032/1261 [15:02<03:18,  1.15it/s]
 82%|████████▏ | 1033/1261 [15:03<03:20,  1.14it/s]
 82%|████████▏ | 1034/1261 [15:04<03:18,  1.14it/s]
 82%|████████▏ | 1035/1261 [15:05<03:20,  1.13it/s]
 82%|████████▏ | 1036/1261 [15:06<03:18,  1.13it/s]
 82%|████████▏ | 1037/1261 [15:07<03:17,  1.14it/s]
 82%|████████▏ | 1038/1261 [15:08<03:15,  1.14it/s]
 82%|████████▏ | 1039/1261 [15:09<03:14,  1.14it/s]
 82%|████████▏ | 1040/1261 [15:10<03:15,  1.13it/s]
 83%|████████▎ | 1041/1261 [15:10<03:13,  1.14it/s]
 83%|████████▎ | 1042/1261 [15:11<03:11,  1.14it/s]
 83%|████████▎ | 1043/1261 [15:12<03:11,  1.14it/s]
 83%|████████▎ | 1044/1261 [15:13<03:11,  1.13it/s]
 83%|████████▎ | 1045/1261 [15:14<03:10,  1.13it/s]
 83%|████████▎ | 1046/1261 [15:15<03:09,  1.14it/s]
 83%|████████▎ | 1047/1261 [15:16<03:07,  1.14it/s]
 83%|████████▎ | 1048/1261 [15:17<03:07,  1.14it/s]
 83%|████████▎ | 1049/1261 [15:17<03:05,  1.14it/s]
 83%|████████▎ | 1050/1261 [15:18<03:05,  1.14it/s]
 83%|████████▎ | 1051/1261 [15:19<03:05,  1.13it/s]
 83%|████████▎ | 1052/1261 [15:20<03:03,  1.14it/s]
 84%|████████▎ | 1053/1261 [15:21<03:02,  1.14it/s]
 84%|████████▎ | 1054/1261 [15:22<03:01,  1.14it/s]
 84%|████████▎ | 1055/1261 [15:23<03:00,  1.14it/s]
 84%|████████▎ | 1056/1261 [15:24<03:00,  1.14it/s]
 84%|████████▍ | 1057/1261 [15:24<02:58,  1.14it/s]
 84%|████████▍ | 1058/1261 [15:25<02:57,  1.14it/s]
 84%|████████▍ | 1059/1261 [15:26<02:58,  1.13it/s]
 84%|████████▍ | 1060/1261 [15:27<02:57,  1.13it/s]
 84%|████████▍ | 1061/1261 [15:28<02:55,  1.14it/s]
 84%|████████▍ | 1062/1261 [15:29<02:54,  1.14it/s]
 84%|████████▍ | 1063/1261 [15:30<02:53,  1.14it/s]
 84%|████████▍ | 1064/1261 [15:31<02:51,  1.15it/s]
 84%|████████▍ | 1065/1261 [15:31<02:50,  1.15it/s]
 85%|████████▍ | 1066/1261 [15:32<02:49,  1.15it/s]
 85%|████████▍ | 1067/1261 [15:33<02:48,  1.15it/s]
 85%|████████▍ | 1068/1261 [15:34<02:49,  1.14it/s]
 85%|████████▍ | 1069/1261 [15:35<02:48,  1.14it/s]
 85%|████████▍ | 1070/1261 [15:36<02:47,  1.14it/s]
 85%|████████▍ | 1071/1261 [15:37<02:46,  1.14it/s]
 85%|████████▌ | 1072/1261 [15:38<02:45,  1.14it/s]
 85%|████████▌ | 1073/1261 [15:38<02:44,  1.14it/s]
 85%|████████▌ | 1074/1261 [15:39<02:43,  1.15it/s]
 85%|████████▌ | 1075/1261 [15:40<02:42,  1.15it/s]
 85%|████████▌ | 1076/1261 [15:41<02:41,  1.15it/s]
 85%|████████▌ | 1077/1261 [15:42<02:44,  1.12it/s]
 85%|████████▌ | 1078/1261 [15:43<02:42,  1.13it/s]
 86%|████████▌ | 1079/1261 [15:44<02:40,  1.14it/s]
 86%|████████▌ | 1080/1261 [15:45<02:38,  1.14it/s]
 86%|████████▌ | 1081/1261 [15:45<02:37,  1.14it/s]
 86%|████████▌ | 1082/1261 [15:46<02:35,  1.15it/s]
 86%|████████▌ | 1083/1261 [15:47<02:35,  1.15it/s]
 86%|████████▌ | 1084/1261 [15:48<02:36,  1.13it/s]
 86%|████████▌ | 1085/1261 [15:49<02:36,  1.12it/s]
 86%|████████▌ | 1086/1261 [15:50<02:34,  1.13it/s]
 86%|████████▌ | 1087/1261 [15:51<02:32,  1.14it/s]
 86%|████████▋ | 1088/1261 [15:52<02:31,  1.14it/s]
 86%|████████▋ | 1089/1261 [15:53<02:30,  1.14it/s]
 86%|████████▋ | 1090/1261 [15:53<02:29,  1.15it/s]
 87%|████████▋ | 1091/1261 [15:54<02:28,  1.15it/s]
 87%|████████▋ | 1092/1261 [15:55<02:27,  1.14it/s]
 87%|████████▋ | 1093/1261 [15:56<02:26,  1.14it/s]
 87%|████████▋ | 1094/1261 [15:57<02:25,  1.15it/s]
 87%|████████▋ | 1095/1261 [15:58<02:25,  1.14it/s]
 87%|████████▋ | 1096/1261 [15:59<02:28,  1.11it/s]
 87%|████████▋ | 1097/1261 [16:00<02:26,  1.12it/s]
 87%|████████▋ | 1098/1261 [16:00<02:25,  1.12it/s]
 87%|████████▋ | 1099/1261 [16:01<02:26,  1.10it/s]
 87%|████████▋ | 1100/1261 [16:02<02:25,  1.11it/s]
 87%|████████▋ | 1101/1261 [16:03<02:23,  1.11it/s]
 87%|████████▋ | 1102/1261 [16:04<02:22,  1.12it/s]
 87%|████████▋ | 1103/1261 [16:05<02:20,  1.13it/s]
 88%|████████▊ | 1104/1261 [16:06<02:18,  1.13it/s]
 88%|████████▊ | 1105/1261 [16:07<02:18,  1.13it/s]
 88%|████████▊ | 1106/1261 [16:08<02:16,  1.13it/s]
 88%|████████▊ | 1107/1261 [16:08<02:16,  1.13it/s]
 88%|████████▊ | 1108/1261 [16:09<02:15,  1.13it/s]
 88%|████████▊ | 1109/1261 [16:10<02:13,  1.14it/s]
 88%|████████▊ | 1110/1261 [16:11<02:12,  1.14it/s]
 88%|████████▊ | 1111/1261 [16:12<02:11,  1.14it/s]
 88%|████████▊ | 1112/1261 [16:13<02:11,  1.13it/s]
 88%|████████▊ | 1113/1261 [16:14<02:10,  1.13it/s]
 88%|████████▊ | 1114/1261 [16:15<02:09,  1.13it/s]
 88%|████████▊ | 1115/1261 [16:16<02:08,  1.14it/s]
 89%|████████▊ | 1116/1261 [16:16<02:06,  1.14it/s]
 89%|████████▊ | 1117/1261 [16:17<02:06,  1.14it/s]
 89%|████████▊ | 1118/1261 [16:18<02:05,  1.14it/s]
 89%|████████▊ | 1119/1261 [16:19<02:04,  1.14it/s]
 89%|████████▉ | 1120/1261 [16:20<02:03,  1.14it/s]
 89%|████████▉ | 1121/1261 [16:21<02:02,  1.14it/s]
 89%|████████▉ | 1122/1261 [16:22<02:01,  1.15it/s]
 89%|████████▉ | 1123/1261 [16:23<02:00,  1.15it/s]
 89%|████████▉ | 1124/1261 [16:23<01:59,  1.15it/s]
 89%|████████▉ | 1125/1261 [16:24<01:58,  1.14it/s]
 89%|████████▉ | 1126/1261 [16:25<01:57,  1.14it/s]
 89%|████████▉ | 1127/1261 [16:26<01:57,  1.14it/s]
 89%|████████▉ | 1128/1261 [16:27<01:56,  1.14it/s]
 90%|████████▉ | 1129/1261 [16:28<01:55,  1.15it/s]
 90%|████████▉ | 1130/1261 [16:29<01:54,  1.15it/s]
 90%|████████▉ | 1131/1261 [16:29<01:53,  1.15it/s]
 90%|████████▉ | 1132/1261 [16:30<01:52,  1.15it/s]
 90%|████████▉ | 1133/1261 [16:31<01:51,  1.15it/s]
 90%|████████▉ | 1134/1261 [16:32<01:50,  1.15it/s]
 90%|█████████ | 1135/1261 [16:33<01:50,  1.14it/s]
 90%|█████████ | 1136/1261 [16:34<01:49,  1.14it/s]
 90%|█████████ | 1137/1261 [16:35<01:49,  1.14it/s]
 90%|█████████ | 1138/1261 [16:36<01:47,  1.14it/s]
 90%|█████████ | 1139/1261 [16:37<01:48,  1.12it/s]
 90%|█████████ | 1140/1261 [16:37<01:46,  1.13it/s]
 90%|█████████ | 1141/1261 [16:38<01:45,  1.14it/s]
 91%|█████████ | 1142/1261 [16:39<01:44,  1.14it/s]
 91%|█████████ | 1143/1261 [16:40<01:43,  1.14it/s]
 91%|█████████ | 1144/1261 [16:41<01:42,  1.14it/s]
 91%|█████████ | 1145/1261 [16:42<01:41,  1.14it/s]
 91%|█████████ | 1146/1261 [16:43<01:40,  1.15it/s]
 91%|█████████ | 1147/1261 [16:43<01:38,  1.15it/s]
 91%|█████████ | 1148/1261 [16:44<01:38,  1.15it/s]
 91%|█████████ | 1149/1261 [16:45<01:37,  1.15it/s]
 91%|█████████ | 1150/1261 [16:46<01:36,  1.15it/s]
 91%|█████████▏| 1151/1261 [16:47<01:35,  1.15it/s]
 91%|█████████▏| 1152/1261 [16:48<01:34,  1.15it/s]
 91%|█████████▏| 1153/1261 [16:49<01:33,  1.15it/s]
 92%|█████████▏| 1154/1261 [16:50<01:33,  1.15it/s]
 92%|█████████▏| 1155/1261 [16:50<01:32,  1.15it/s]
 92%|█████████▏| 1156/1261 [16:51<01:31,  1.15it/s]
 92%|█████████▏| 1157/1261 [16:52<01:30,  1.15it/s]
 92%|█████████▏| 1158/1261 [16:53<01:29,  1.15it/s]
 92%|█████████▏| 1159/1261 [16:54<01:28,  1.15it/s]
 92%|█████████▏| 1160/1261 [16:55<01:27,  1.15it/s]
 92%|█████████▏| 1161/1261 [16:56<01:27,  1.15it/s]
 92%|█████████▏| 1162/1261 [16:57<01:26,  1.15it/s]
 92%|█████████▏| 1163/1261 [16:57<01:25,  1.15it/s]
 92%|█████████▏| 1164/1261 [16:58<01:24,  1.15it/s]
 92%|█████████▏| 1165/1261 [16:59<01:23,  1.15it/s]
 92%|█████████▏| 1166/1261 [17:00<01:22,  1.15it/s]
 93%|█████████▎| 1167/1261 [17:01<01:21,  1.15it/s]
 93%|█████████▎| 1168/1261 [17:02<01:21,  1.15it/s]
 93%|█████████▎| 1169/1261 [17:03<01:20,  1.14it/s]
 93%|█████████▎| 1170/1261 [17:04<01:19,  1.15it/s]
 93%|█████████▎| 1171/1261 [17:04<01:18,  1.15it/s]
 93%|█████████▎| 1172/1261 [17:05<01:17,  1.14it/s]
 93%|█████████▎| 1173/1261 [17:06<01:16,  1.14it/s]
 93%|█████████▎| 1174/1261 [17:07<01:15,  1.15it/s]
 93%|█████████▎| 1175/1261 [17:08<01:15,  1.15it/s]
 93%|█████████▎| 1176/1261 [17:09<01:16,  1.12it/s]
 93%|█████████▎| 1177/1261 [17:10<01:14,  1.13it/s]
 93%|█████████▎| 1178/1261 [17:11<01:13,  1.13it/s]
 93%|█████████▎| 1179/1261 [17:11<01:12,  1.12it/s]
 94%|█████████▎| 1180/1261 [17:12<01:11,  1.13it/s]
 94%|█████████▎| 1181/1261 [17:13<01:10,  1.14it/s]
 94%|█████████▎| 1182/1261 [17:14<01:09,  1.14it/s]
 94%|█████████▍| 1183/1261 [17:15<01:08,  1.15it/s]
 94%|█████████▍| 1184/1261 [17:16<01:07,  1.15it/s]
 94%|█████████▍| 1185/1261 [17:17<01:06,  1.13it/s]
 94%|█████████▍| 1186/1261 [17:18<01:05,  1.14it/s]
 94%|█████████▍| 1187/1261 [17:18<01:04,  1.15it/s]
 94%|█████████▍| 1188/1261 [17:19<01:03,  1.15it/s]
 94%|█████████▍| 1189/1261 [17:20<01:02,  1.15it/s]
 94%|█████████▍| 1190/1261 [17:21<01:02,  1.14it/s]
 94%|█████████▍| 1191/1261 [17:22<01:01,  1.15it/s]
 95%|█████████▍| 1192/1261 [17:23<01:00,  1.15it/s]
 95%|█████████▍| 1193/1261 [17:24<00:59,  1.15it/s]
 95%|█████████▍| 1194/1261 [17:25<00:59,  1.13it/s]
 95%|█████████▍| 1195/1261 [17:25<00:58,  1.13it/s]
 95%|█████████▍| 1196/1261 [17:26<00:57,  1.14it/s]
 95%|█████████▍| 1197/1261 [17:27<00:56,  1.14it/s]
 95%|█████████▌| 1198/1261 [17:28<00:55,  1.14it/s]
 95%|█████████▌| 1199/1261 [17:29<00:54,  1.14it/s]
 95%|█████████▌| 1200/1261 [17:30<00:53,  1.15it/s]
 95%|█████████▌| 1201/1261 [17:31<00:52,  1.15it/s]
 95%|█████████▌| 1202/1261 [17:32<00:51,  1.15it/s]
 95%|█████████▌| 1203/1261 [17:32<00:50,  1.15it/s]
 95%|█████████▌| 1204/1261 [17:33<00:49,  1.15it/s]
 96%|█████████▌| 1205/1261 [17:34<00:49,  1.13it/s]
 96%|█████████▌| 1206/1261 [17:35<00:48,  1.14it/s]
 96%|█████████▌| 1207/1261 [17:36<00:47,  1.14it/s]
 96%|█████████▌| 1208/1261 [17:37<00:46,  1.14it/s]
 96%|█████████▌| 1209/1261 [17:38<00:45,  1.14it/s]
 96%|█████████▌| 1210/1261 [17:39<00:44,  1.14it/s]
 96%|█████████▌| 1211/1261 [17:39<00:43,  1.15it/s]
 96%|█████████▌| 1212/1261 [17:40<00:43,  1.12it/s]
 96%|█████████▌| 1213/1261 [17:41<00:42,  1.13it/s]
 96%|█████████▋| 1214/1261 [17:42<00:41,  1.13it/s]
 96%|█████████▋| 1215/1261 [17:43<00:40,  1.13it/s]
 96%|█████████▋| 1216/1261 [17:44<00:39,  1.13it/s]
 97%|█████████▋| 1217/1261 [17:45<00:38,  1.14it/s]
 97%|█████████▋| 1218/1261 [17:46<00:37,  1.13it/s]
 97%|█████████▋| 1219/1261 [17:47<00:36,  1.14it/s]
 97%|█████████▋| 1220/1261 [17:47<00:35,  1.15it/s]
 97%|█████████▋| 1221/1261 [17:48<00:34,  1.15it/s]
 97%|█████████▋| 1222/1261 [17:49<00:33,  1.15it/s]
 97%|█████████▋| 1223/1261 [17:50<00:33,  1.15it/s]
 97%|█████████▋| 1224/1261 [17:51<00:32,  1.15it/s]
 97%|█████████▋| 1225/1261 [17:52<00:31,  1.15it/s]
 97%|█████████▋| 1226/1261 [17:53<00:30,  1.15it/s]
 97%|█████████▋| 1227/1261 [17:54<00:29,  1.15it/s]
 97%|█████████▋| 1228/1261 [17:54<00:29,  1.14it/s]
 97%|█████████▋| 1229/1261 [17:55<00:28,  1.14it/s]
 98%|█████████▊| 1230/1261 [17:56<00:27,  1.14it/s]
 98%|█████████▊| 1231/1261 [17:57<00:26,  1.14it/s]
 98%|█████████▊| 1232/1261 [17:58<00:25,  1.14it/s]
 98%|█████████▊| 1233/1261 [17:59<00:24,  1.14it/s]
 98%|█████████▊| 1234/1261 [18:00<00:23,  1.14it/s]
 98%|█████████▊| 1235/1261 [18:01<00:22,  1.15it/s]
 98%|█████████▊| 1236/1261 [18:01<00:21,  1.15it/s]
 98%|█████████▊| 1237/1261 [18:02<00:21,  1.13it/s]
 98%|█████████▊| 1238/1261 [18:03<00:20,  1.10it/s]
 98%|█████████▊| 1239/1261 [18:04<00:19,  1.12it/s]
 98%|█████████▊| 1240/1261 [18:05<00:18,  1.13it/s]
 98%|█████████▊| 1241/1261 [18:06<00:17,  1.14it/s]
 98%|█████████▊| 1242/1261 [18:07<00:16,  1.13it/s]
 99%|█████████▊| 1243/1261 [18:08<00:15,  1.13it/s]
 99%|█████████▊| 1244/1261 [18:09<00:14,  1.14it/s]
 99%|█████████▊| 1245/1261 [18:09<00:13,  1.14it/s]
 99%|█████████▉| 1246/1261 [18:10<00:13,  1.14it/s]
 99%|█████████▉| 1247/1261 [18:11<00:12,  1.15it/s]
 99%|█████████▉| 1248/1261 [18:12<00:11,  1.14it/s]
 99%|█████████▉| 1249/1261 [18:13<00:10,  1.14it/s]
 99%|█████████▉| 1250/1261 [18:14<00:09,  1.13it/s]
 99%|█████████▉| 1251/1261 [18:15<00:08,  1.14it/s]
 99%|█████████▉| 1252/1261 [18:16<00:07,  1.14it/s]
 99%|█████████▉| 1253/1261 [18:16<00:07,  1.14it/s]
 99%|█████████▉| 1254/1261 [18:17<00:06,  1.14it/s]
100%|█████████▉| 1255/1261 [18:18<00:05,  1.14it/s]
100%|█████████▉| 1256/1261 [18:19<00:04,  1.15it/s]
100%|█████████▉| 1257/1261 [18:20<00:03,  1.15it/s]
100%|█████████▉| 1258/1261 [18:21<00:02,  1.15it/s]
100%|█████████▉| 1259/1261 [18:22<00:01,  1.15it/s]
100%|█████████▉| 1260/1261 [18:22<00:00,  1.15it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_proc.mp4 

CPU times: user 33min 22s, sys: 3min 46s, total: 37min 9s
Wall time: 18min 23s